jQuery-捕获并覆盖target=_blank的链接

jQuery - catch and override links with target=_blank

本文关键字:blank 链接 target 覆盖 jQuery-      更新时间:2023-09-26

我们有一些遗留页面,其中包含target="_blank"的链接。在点击这些时,我想忽略这一点,并运行一些用于打开窗口的JavaScript。

jQuery可能做到这一点吗?如果可以,我应该研究什么方法/术语?

提前感谢

只需使用事件委派来阻止target="_blank"的链接工作,例如:

$(document).on('click', 'a[target="_blank"]', function(event) {
    event.preventDefault();
    alert('Prevented');
});
$('a[target=_blank]').click(function(e){
    e.preventDefault();
    //do what you want here
});

演示:http://jsfiddle.net/kkhNr/1/

试试这个

   $('a[target=_blank]').click(function(event) {
        event.preventDefault();            
        // Now make a call to your own function
    });

我只是想指出@Roger C的监听器是一个更好的解决方案。。。如果您的页面上有任何动态加载的内容(即AJAX或AngularJS单页应用程序)。

这个监听器监听文档的点击,并将拾取新添加的内容,而无需在内容更改后重新添加监听器:

$(document).on('click', 'a[target="_blank"]', function(event) {
    event.preventDefault();
    alert('Prevented');
});

此侦听器侦听调用时找到的所有选择器(可能缺少任何新添加的内容):

$('a[target=_blank]').click(function(e){
    e.preventDefault();
    alert('Prevented');
});