我正在尝试为我的选择者建立一种方式来“倾听”超出典型的“点击”“更改”“提交”等的“全球”事件。我已经探索了各种“事件管理者”,我可以找到,而且它们仍然是为表格而设计的。对于非标准(即自定义)事件,有没有办法做这样的事情?目标是让选择者订阅一个事件,然后能够在一个的地方触发它,它会为订阅它的所有东西提升它。
插入示例进行演示。
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();
});
//插件的其余部分......
$("*").trigger('ON_CONTENT_CHANGING');
答案 0 :(得分:5)
这是内置于jQuery中的,例如:
$(".button").bind("myEvent", function() {
alert("myEvent fired on " + this.id);
});
触发:
$("*").trigger("myEvent");
或者在特定元素(或任何选择器,如其他所有jQuery)上:
$("#myButton").trigger("myEvent");
这使用.bind()
和.trigger()
。正如雅各布在评论中指出的那样,你也可以用.live()
绑定1.4+中的自定义事件,如下所示:
$(".button").live("myEvent", function() {
alert("myEvent fired on " + this.id);
});