我正在寻找一种方法来实现以下功能。我可以建立一些机制来做到这一点,我正在寻求一些内置的或者非常简单的方法,如果它存在并且我错过了它。jQuery中的默认事件处理程序
编辑: 请注意,我正在讨论随机对象中的事件,而不是DOM元素。根据可能的副本中的建议,无法使用父级等来管理事件顺序。
编辑2: 也许所有的处理程序,被称为回调?还是一个总是最后执行的处理程序?
考虑:
var someObject={};
$(someObject).on("event",function() { console.log('Default handler'); });
...
$(someObject).on("event",function() { console.log('Other handler'); });
做当:
$(someObject).triggerHandler("event");
输出是:
Default handler
Other handler
我们都知道这一点。问题是:如果我想将第一个事件设置为“默认”处理程序,如果没有其他事件处理程序(在那里没有问题)要执行,或者其他处理程序没有停止事件传播这是问题)。
我正在寻找一种方法能够像做:
$(someObject).on("event",function(ev) { ev.preventDefault(); });
,并防止第一事件处理程序的执行。在这个例子中没有给出执行顺序。反转执行顺序不是正确的方法。
TL; DR
是否可以设置一个默认的处理器,一个被称为万一有没有其他的处理程序和事件没有被取消?
编辑3:为了给你一个更好的主意,目前的做法是以下(名称是由这个例子):
var eventCanceled=false;
function doTheEvent() {
$(someObject).triggerHandler("event");
if(!eventCanceled) defaultEventHandler();
}
//To be called inside the handlers to stop the default handler
function cancelTheEvent() {
eventCanceled=true;
}
我只是想摆脱这一点,并能直接使用triggerHandler
。
[优先级当多于一个的事件处理程序被绑定到一个元素(的可能的复制http://stackoverflow.com/questions/8779657/priority-when-more-than-一个事件处理程序是绑定到元素) –
不完全是,请注意,我正在讨论随机对象,而不是DOM元素。 – Gabriel
而不是有两个相同名称的事件名称“”事件“''”事件“'你有没有想过改成''默认值''和'”事件“' –