如何将jQuery事件处理程序转换为纯JavaScript

如何将jQuery事件处理程序转换为纯JavaScript,javascript,jquery,dom-events,Javascript,Jquery,Dom Events,我以前的代码使用: $(document).on('click', 'a[href^="http"]', () => {}); 拦截链接点击。为了解释复杂的原因,我不得不在jQuery加载之前将代码移到某个地方。如何用纯JavaScript编写此代码?基于上面的注释,您可以使用vanila JavaScript将上面的事件绑定jQuery代码转换为下面的代码 var links = document.querySelector('a[href^="http"]'); links.forE

我以前的代码使用:

$(document).on('click', 'a[href^="http"]', () => {});

拦截链接点击。为了解释复杂的原因,我不得不在jQuery加载之前将代码移到某个地方。如何用纯JavaScript编写此代码?

基于上面的注释,您可以使用vanila JavaScript将上面的事件绑定jQuery代码转换为下面的代码

var links = document.querySelector('a[href^="http"]');
links.forEach(function(link) {
    button.addEventListener("click",function(e){
       // handling logic
    }, false);
} )
上面的代码将事件处理程序绑定到每个a元素,这可能非常昂贵

创建事件委托

向文档中添加事件处理程序,查看目标是否为所需的链接

document.addEventListener("click", function(e) {
    // check the target has an attribute of `a[href^="http"]`
    if(e.target && e.target.nodeName == "a") {

    }
});

上面的代码使用事件冒泡来捕获文档中的click事件。

我认为在将事件处理程序加载到browser env之前,无法要求jQuery绑定事件处理程序。如果有我想知道的解决方案,我并不是特别指使用jQuery;如果可能的话,我想把jQuery删掉,只使用JavaScript就可以了。我更喜欢第二种建议的解决方案,因为我相信它更类似于我所拥有的,并且也适用于代码运行后添加的链接。谢谢