jQuery函数传递参数

时间:2012-02-21 05:16:45

标签: jquery



var abc = '5';
$('#test').click(meraFunc(abc));
function meraFunc(abc)
{
  alert(abc);
}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="button" id="test" value="testMe">
&#13;
&#13;
&#13;

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

5 个答案:

答案 0 :(得分:9)

问题在于这一行:

j('#test').click(meraFunc(abc)); 

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

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

j('#test').click(meraFunc);   // no parens after meraFunc

但是如何传递参数?将呼叫包含在另一个功能中,如下所示:

j('#test').click(function() {
   meraFunc(abc);
});

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

答案 1 :(得分:7)

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

j('#test').click(function() {
    meraFunc(abc);
});

答案 2 :(得分:0)

@ Umesh251:我知道您从@heikkim获得了有效的解决方案,但只想解释现有代码的异常行为。

$('#test').click(meraFunc(abc));

您在页面加载时收到警报,因为您没有将点击事件绑定到#test。这就是为什么手动点击测试按钮时没有警报的原因。

答案 3 :(得分:-1)

Var abc= 5;
$('#test').click(function());
function meraFunc(abc)
{
    alert(abc);
}

享受

答案 4 :(得分:-1)

将meraFunc包装在匿名函数中。

  var abc = '5';

  $('#test').click(function(){
    meraFunc(abc)
  });

  function meraFunc(abc)
  {
    alert(abc);
  }