禁用页面上的所有target =“_ blank”链接

时间:2013-05-03 09:00:34

标签: jquery hyperlink preventdefault

我正在为通过PhoneGap移动应用中的iframe显示的网站构建内容。内容是从CMS提取的,CMS也提供主网站的内容,因此它混合了内部和目标=“_空白”链接。

处理target =“_ blank”链接在PhoneGap中证明是有问题的,所以我想在应用网站中禁用它们而不触及内容,因为它也在主网站上使用。

我需要的是在页面加载时运行的jQuery,找到具有target =“_ blank”属性的所有链接并使链接成为普通文本。

这样的事情(How to disable all links before load jQuery?)会禁用所有链接,但我只想禁用具有target =“_ blank”属性的链接,并且我想隐藏这些字首先是链接的事实:< / p>

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();
    }
}

所以我不想简单地在链接点击时阻止默认(),但在保留链接文本的同时完全删除链接,我想将此应用于target =“_ blank”链接。

4 个答案:

答案 0 :(得分:3)

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

或者,如果您想完全删除a代码

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

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

答案 1 :(得分:2)

您可以删除链接并将其替换为仅使用文本进行替换:

$('a[target="_blank"]').each(function(){
    var linkText = $(this).text();
    $(this).after(linkText);
    $(this).remove();
});

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

答案 2 :(得分:0)

我认为

$('a[target=_blank]')

正是您要找的。

答案 3 :(得分:0)

<a>target='_blank'转换为普通文字。

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

或使用<a>

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