3

我正在为通过 PhoneGap 移动应用程序中的 iframe 显示的网站构建内容。内容是从 CMS 中提取的,该 CMS 还为主网站提供内容,因此它混合了内部链接和 target="_blank" 链接。

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

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

像这样的东西(如何在加载 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();
    }
}

因此,我不想简单地在链接单击时阻止默认(),而是在保留链接文本的同时完全删除链接,我只想将其应用于 target="_blank" 链接。

4

4 回答 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/

于 2013-05-03T09:02:32.113 回答
2

您可以删除链接并将它们替换为仅执行此操作的文本:

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

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

于 2013-05-03T09:04:45.837 回答
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>');
});
于 2013-05-03T09:08:19.330 回答
0

我认为

$('a[target=_blank]')

就是你要找的。

于 2013-05-03T09:03:46.897 回答