jquery函数传递参数

Ume*_*251 1 jquery

var abc = '5';
$('#test').click(meraFunc(abc));
function meraFunc(abc)
{
  alert(abc);
}
Run Code Online (Sandbox Code Playgroud)

javascript - >

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="button" id="test" value="testMe">
Run Code Online (Sandbox Code Playgroud)

当我加载页面时,警告弹出显示'5'[我还没有点击按钮].当我点击按钮时,没有任何反应.这是在jQuery中传递参数的正确方法吗?

nnn*_*nnn 9

问题是在这一行:

j('#test').click(meraFunc(abc)); 
Run Code Online (Sandbox Code Playgroud)

您正在调用 meraFunc,然后将它返回的任何内容(未定义)传递给.click()函数.这就是警报立即弹出的原因.

您需要传递一个函数引用,.click()如下所示:

j('#test').click(meraFunc);   // no parens after meraFunc
Run Code Online (Sandbox Code Playgroud)

但那么如何传递参数?将呼叫包含在另一个函数中,如下所示:

j('#test').click(function() {
   meraFunc(abc);
});
Run Code Online (Sandbox Code Playgroud)

请注意,我添加的匿名函数()之后也没有任何parens,因此不会立即调用它.然后,当发生实际的单击事件时,将调用匿名函数,然后它将使用参数调用您的函数meraFunc(abc).


hei*_*kim 7

用匿名函数(jsfiddle demo)包装它:

j('#test').click(function() {
    meraFunc(abc);
});
Run Code Online (Sandbox Code Playgroud)