我试图在使用函数之前将其定义为变量,显然我可以使用 $(this).off('mouseleave', fadeOutt) 将其关闭并 $(this).on('mouseleave', fadeOutt) 再次打开它。
为什么这有效:
var fadeDarl = function(){
$("#darl").on({
mouseenter: function(){
$("#bgimg1").stop(true,true).fadeIn(200);
},
mouseleave: function() {
$("#bgimg1").stop(true,true).fadeOut(200);
}
});
};
fadeDarl();
但不是这个:
var fadeInn = function() {
$("#bgimg1").stop(true,true).fadeIn(200);
};
var fadeOutt = function() {
$("#bgimg1").stop(true,true).fadeOut(200);
};
var fadeDarl = function(){
$("#darl").on({
mouseenter: fadeInn(),
mouseleave: fadeOutt()
});
};
fadeDarl();
最佳答案
在此代码中:
var fadeDarl = function(){
$("#darl").on({
mouseenter: fadeInn(),
mouseleave: fadeOutt()
});
};
当您在 fadeInn
后面加上括号时,您将调用该函数并将其返回值分配给 mouseenter
。
您真正想要做的是将函数本身分配给mouseenter
,以便稍后在指定事件触发时调用该函数。
因此,只需删除这些括号,它就会按预期工作。
如果您使用的语言无法通过引用传递函数,那么这可能会让您感到困惑,但在 JavaScript 中函数是 first-class objects .
关于javascript - 为什么我不能在 .on 中调用我的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34523277/