jquery函数在没有被调用的情况下运行

时间:2016-05-21 11:21:29

标签: javascript jquery

我的基本设置是:

function overLink ( e ){
    alert( e );
}
$(document).ready(function() {
    $( "#id" ).mouseover( overLink( this ) );
});

然而,在页面加载时调用'overLink',而不是在'#id'悬停时调用。我读到这是因为我的函数声明中的(),但我无法删除它,因为我想将选择器传递给函数。有什么想法吗?

谢谢!

5 个答案:

答案 0 :(得分:3)

当你将“this”传递给函数时,你正在做的就是实际调用函数。试试这个

$(document).ready(function() {
    $("#id").mouseover(function() {
      overLink(this);
    });
});

答案 1 :(得分:2)

因为你正在调用该函数并将鼠标悬停监听器的结果返回给它.... 你应该传递函数引用...而不是它的结果

   $( "#id" ).mouseover(overLink);

答案 2 :(得分:0)

这是调用函数的正确方法: -

function overLink (e){
    alert(e);
}
$(document).ready(function() {
    $( "#id" ).mouseover(function() {
     overLink( this );
    });
});

答案 3 :(得分:0)

当函数名后跟括号(())时,它会立即被JavaScript调用(执行)。要将其作为参考传递,请省略parens。这将有效: -

$(document).ready(function(){
  $("#id").mouseover(overLink);
});

但是既然你要将参数传递给overLink,你应该使用匿名函数: -

$(document).ready(function(){
  $("#id").mouseover(function(){
    overLink(this);
  });
});

答案 4 :(得分:0)

无需将this作为参数传递,因为this中的overLink无论如何都将成为元素。

function overLink(){
    alert(this);
}
$(document).ready(function() {
    $("#id").mouseover(overLink);
});