禁用页面上所有的target="_blank"链接

3
我正在为一个在 PhoneGap 移动应用中通过 iframe 显示的网站构建内容。该内容从一个 CMS 中获取,该 CMS 还为主网站提供内容,因此它具有内部和 target="_blank" 链接的混合。
处理 target="_blank" 链接在 PhoneGap 中存在问题,因此我希望在不触及内容的情况下在应用程序网站上禁用它们,因为它也用于主网站。
我需要的是在页面加载时运行的 jQuery,找到所有带有 target="_blank" 属性的链接,并将链接变成普通文本。
类似于这样 (How to disable all links before load jQuery?) 禁用了所有链接,但我只想禁用带有 target="_blank" 属性的链接,并且我想隐藏第一次将单词变成链接的事实:
var links = document.links;
for (var i = 0, length = links.length; i < length; i++) {
    links[i].onclick = function(e) {
        e = e || window.event;
        e.preventDefault();
    }
}

所以我不想在点击链接时仅仅使用preventDefault(),而是完全删除链接但保留链接文本,且只对target="_blank"的链接应用此操作。

4个回答

3
$('a[target="_blank"]').each(function(){
   $(this).removeAttr('href');
});

如果你想完全移除a标签

$('a[target="_blank"]').each(function(){
   $(this).replaceWith($(this).text());
});

http://jsfiddle.net/mohammadAdil/kZqFD/


不确定,但似乎OP想要:$(this).removeAttr('target'); - A. Wolff
实际上接受这个答案,因为它稍微更干净。 - Jussi H

2
您可以通过以下方法删除链接并仅替换为文本内容:
$('a[target="_blank"]').each(function(){
    var linkText = $(this).text();
    $(this).after(linkText);
    $(this).remove();
});

演示: http://jsfiddle.net/hXFse/

1
+1,因为你是唯一一个阅读问题并按要求执行的人。 - Reinstate Monica Cellio

0

我认为

$('a[target=_blank]')

就是你要找的。


0

将带有 target='_blank'<a> 转换为普通文本。

 $("a[target='_blank']").removeAttr("href");

或者用 <span> 替换 <a>

$.each($('a[target="_blank"]'),function(){
var value = $(this).text();
$(this).replaceWith('<span>'+value+'</span>');
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接