the*_*art 7 javascript jquery events
我写了一个绝对定位的下拉菜单.此菜单打开时,我将触发自定义事件:
ps.DropDown.prototype._onOpenComplete = function() {
$(this).trigger('MENU_OPEN', [this]);
}
Run Code Online (Sandbox Code Playgroud)
当我知道要将ps.DropDown的哪个实例作为目标时,这很有效:
var dd = new ps.DropDown();
$(dd).on('MENU_OPEN', fn);
Run Code Online (Sandbox Code Playgroud)
但是,如果事件没有停止传播,我希望我的自定义事件冒泡到window.document.例如:
var dd = new ps.DropDown();
$(dd).on('MENU_OPEN', function(event, instance) {
// this would stop bubbling to $(window.document)
// event.stopPropagation();
});
$(window.document).on('MENU_OPEN', function(event, instance) {
// bubbled!
});
Run Code Online (Sandbox Code Playgroud)
有没有办法用jQuery实现这个目标?
编辑以类比的方式添加示例
单击按钮元素将触发事件.此事件将继续冒出父元素链,直到它到达window.document(除非传播被事件侦听器停止).我有兴趣为自定义事件合成这种行为,如果没有调用event.stopPropagation(),它将冒泡到window.document(或$ .event,或其他一些全局窗口,没关系)
Ale*_*ril 12
我想你正在寻找手动调用$ .event.trigger:
$.event.trigger('myCustomEvent', someDataObj, someDomElement, false);
Run Code Online (Sandbox Code Playgroud)
最后一个参数用于"onlyHandlers"标志,在这种情况下为false,因为我们要触发元素处理程序,然后在每个parentNode上再次触发.以这种方式,您可以将"myCustomEvent"绑定到窗口和发生此事件的节点之间的任何内容.