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