jquery事件监听,非标准事件

Cie*_*iel 1 jquery

我正在尝试为我的选择者建立一种方式来"倾听"超出典型的"点击""改变""提交"等的"全球"事件.我已经探索了我能找到的各种"事件管理者",它们仍然是为表格而设计的.对于非标准(即自定义)事件,有没有办法做这样的事情?目标是让选择器订阅一个事件,然后能够在一个地方触发它,它将为订阅它的所有内容引发它.

插入示例进行演示.

 return this.each(function () {
  $(this).live('ON_CONTENT_CHANGING', function (e) {
   $(this).block({
    overlayCSS: { opacity: 1, color: '#000' },
    timeout: 800
   });

   e.preventDefault();
  });

  $(this).live('ON_CONTENT_CHANGED', function (e) {
   $(this).sliding();
   $(this).unblock();

   e.preventDefault();
  });
Run Code Online (Sandbox Code Playgroud)

//插件的其余部分......

$("*").trigger('ON_CONTENT_CHANGING');
Run Code Online (Sandbox Code Playgroud)

Nic*_*ver 5

这内置于jQuery中,例如:

$(".button").bind("myEvent", function() {
  alert("myEvent fired on " + this.id);
});
Run Code Online (Sandbox Code Playgroud)

触发:

$("*").trigger("myEvent");
Run Code Online (Sandbox Code Playgroud)

或者在特定元素(或任何选择器,如其他所有jQuery)上:

$("#myButton").trigger("myEvent");
Run Code Online (Sandbox Code Playgroud)

这用.bind().trigger().正如Jacob在评论中指出的那样,你也可以绑定.live()1.4+中的自定义事件,如下所示:

$(".button").live("myEvent", function() {
  alert("myEvent fired on " + this.id);
});
Run Code Online (Sandbox Code Playgroud)