javascript - 为什么我不能在 .on 中调用我的函数?

标签 javascript jquery

我试图在使用函数之前将其定义为变量,显然我可以使用 $(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/

相关文章:

php - 插入数据并勾选以启用输入标签

javascript - 为什么这个 html 不起作用

javascript - 使用 PHP 获取文件位置以便在 JavaScript 中使用

javascript - 当 td 行为空时隐藏表格列

javascript - 为什么我在 Observable 中获得 JavaScript 未定义属性,但在 HTML 中却没有?

javascript - 随页面滚动的 jQuery 灯箱插件

javascript - 根据谷歌表格脚本中的唯一ID同步行数据

javascript - 如何在 Javascript 中隐藏点击的链接并保存在 session 中

javascript - 为什么IE浏览器显示 "scanstyles does nothing in webkit/firefox internet explorer"?

jquery悬停事件无法正常工作