Javascript事件堆栈
我需要在纯Javascript中完成我在jQuery中轻松完成的工作:Javascript事件堆栈,javascript,javascript-events,Javascript,Javascript Events,我需要在纯Javascript中完成我在jQuery中轻松完成的工作: $('document').click(function(e){ e.preventDefault(); }); 在某种程度上,jQuery保证我的事件首先运行,从而防止所有其他注册的点击事件都不会执行 当我尝试使用Javascript时 document.addEventListener('click', function(e){ e.preventDefault(); e.stopPropagatio
$('document').click(function(e){
e.preventDefault();
});
在某种程度上,jQuery保证我的事件首先运行,从而防止所有其他注册的点击事件都不会执行
当我尝试使用Javascript时
document.addEventListener('click', function(e){
e.preventDefault();
e.stopPropagation();
}, 1);
我的活动总是排在最后,因此我无法阻止其他活动。是否有任何方法可以保证我添加的事件将被添加到堆栈的顶部,因此首先执行
谢谢,这是不对的
event.preventDefault
不会阻止任何其他已注册的处理程序触发,它只会阻止“默认”行为(例如,对于锚定
)
event.stopPropagation
将阻止事件在DOM树中进一步冒泡,因此这可能是一个更准确的描述。但是,无论是使用addEventListener
还是jQuery绑定事件都没有区别(因为它将在下面使用相同的函数)
您确定要在同一位置绑定事件吗?我使用的是一个库,出于某些原因,我需要在加载javascript之前加载该库,并且不能篡改代码。因此,他们的事件(带有匿名函数)在我的事件之前添加到文档中。如何停止它的运行?
event.stopImmediatePropagation()
将停止事件冒泡,并且不会为当前阶段调用任何其他侦听器。无论您使用jQUery还是addEventListener
,都会产生很大的不同,因为jQUery完全模拟了它们自己的事件系统,只是轻轻地钩住DOM。jQuery的事件监听器是有序的,因为它们添加了一个新的监听器,按顺序调用所有监听器。事件是无序的,否则就处理它。抱歉,m8,但如果jQuery这样做,一定有办法。我会尝试对它进行反向工程,但如果有人有直接的答案会更容易。当然,你可以通过编写自己的事件系统来实现。jQuery就是这样做的,它有自己的事件系统。