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中传递参数的正确方法吗?
问题是在这一行:
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).
用匿名函数(jsfiddle demo)包装它:
j('#test').click(function() {
meraFunc(abc);
});
Run Code Online (Sandbox Code Playgroud)