使用.on()和名称空间语法附加多个事件处理程序

时间:2013-08-14 06:28:43

标签: javascript jquery syntax

在jQuery中使用.on()时,您可以附加多个事件处理程序,如下所示:

$("li").on({
  click: function(){
    $(this).toggleClass("active");
  },
  mouseenter: function(){
    $(this).addClass("inside");
  },
  mouseleave: function(){
    $(this).removeClass("inside");
  }
});

您还可以使用名称空间处理事件,如下所示:

$( 'li' ).on( 'click.toggles', function() {
  $(this).toggleClass("active");
});
$( 'li' ).off( 'click.toggles' );
//click.toggles is the name space?

你如何结合这两种语法?希望使用.off()轻松关闭一组多个事件处理程序。

或者我完全不理解命名空间,这是错误的。

1 个答案:

答案 0 :(得分:2)

对于on,您可以写:

$("li").on({
  "click.namespace": function(){
    $(this).toggleClass("active");
  },
  "mouseenter.namespace": function(){
    $(this).addClass("inside");
  },
  "mouseleave.namespace": function(){
    $(this).removeClass("inside");
  }
});

对于off,你可以写

$("li").off(".namespace");
$("li").off("click.namespace mouseenter.namespace mouseleave.namespace");