【问题标题】:jquery .on() executing function before event occursjquery .on() 在事件发生之前执行函数
【发布时间】:2013-05-01 22:11:25
【问题描述】:
var MobileMenu = {
    menu: function () {
        $('#navigation').toggleClass("open");
        $('body').toggleClass("push");
    }
}    

$(function(){
    $(".icon-menu").on("click", MobileMenu.menu());
});

由于某种原因,这会立即在正在加载的页面上触发 MobileMenu.menu,并且“.icon-menu”似乎不再具有事件绑定。除了加载 jquery 之外,没有其他 javascript。

【问题讨论】:

  • 您没有绑定处理程序,而是绑定MobileMenu.menu() 的返回值,因为您在绑定时调用了函数本身。

标签: javascript jquery function namespaces


【解决方案1】:

MobileMenu.menu() 会调用这个函数,你只需要MobileMenu.menu

$(function(){
    $(".icon-menu").on("click", MobileMenu.menu);
});

【讨论】:

    【解决方案2】:

    .on 方法没有执行它。你和()在一起。

    如果您需要保留MobileMenu 上下文,请使用匿名函数。

    $(".icon-menu").on("click", function(e) {
        MobileMenu.menu(e)
    });
    

    或使用$.proxy()

    $(".icon-menu").on("click", $.proxy(MobileMenu, "menu"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多