在Javascript中使用扩展库中的事件处理优先级
我正在使用Javascript库处理模式窗口。 关键是库中有自定义事件的处理程序,例如下面的javascript在Javascript中使用扩展库中的事件处理优先级,javascript,jquery,remodal,Javascript,Jquery,Remodal,我正在使用Javascript库处理模式窗口。 关键是库中有自定义事件的处理程序,例如下面的javascript $(document).on('opening', '.remodal', function (e) { console.log('opening'); }); 通过单击另一个DOM元素打开模式窗口时将触发 <a data-remodal-target="modal-window-id" id="trigger">CLICK ME TO OPEN MODAL<
$(document).on('opening', '.remodal', function (e) {
console.log('opening');
});
通过单击另一个DOM元素打开模式窗口时将触发
<a data-remodal-target="modal-window-id" id="trigger">CLICK ME TO OPEN MODAL</a>
<div class="remodal data-remodal-id="modal-window-id>MODAL CONTENT</div>
无论上一个脚本的位置如何(即,在另一个脚本之前或之后),我都可以看到opening
事件在另一个脚本之前触发。我知道,在Javascript中,除了一些例外或在使用jQuery时(例如,以正确的顺序附加侦听器),实际上并不能保证事件执行
现在,如何在打开之前执行单击?它发生在之前,但不知何故,应该有另一个click
侦听器连接到之前执行的锚定
有什么想法吗?如果您真正想要的是在单击处理程序后强制执行打开处理程序中的代码,则始终可以使用setTimeout:
setTimeout("console.log('opening');",100);
如果您真正想要的是强制打开处理程序中的代码在单击处理程序之后运行,那么您可以始终使用setTimeout(“console.log('opening');”,100);到delay@mjw谢谢你的反馈。这似乎不是一个可靠的解决方案。如果第一次单击所需时间超过100毫秒,会发生什么情况?如果console.log idk所需时间超过100毫秒,会告诉您什么;)不,我的意思是,如果单击事件执行的函数花费的时间超过100ms@mjw无论如何,这个解决方案是有效的,我不是100%确定它是可靠的,但它是有效的。所以,也许你可以发布一个完整的答案
setTimeout("console.log('opening');",100);