我的基本设置是:
function overLink ( e ){
alert( e );
}
$(document).ready(function() {
$( "#id" ).mouseover( overLink( this ) );
});
然而,在页面加载时调用'overLink',而不是在'#id'悬停时调用。我读到这是因为我的函数声明中的(),但我无法删除它,因为我想将选择器传递给函数。有什么想法吗?
谢谢!
答案 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);
});