使用jquery删除无效标记

时间:2015-07-18 18:49:30

标签: javascript jquery html

我试图用jquery删除一些无效的标签/ html,但我认为因为无效的选择器无法找到它。 IE



$("a").find("a").remove();






 $(.container p).each(function (index) {

            var cont = $(this).html().match(/^(.*?<A[^>]+>.*?)<A[^>]+>.*?(<\/A>.*)$/i);
            if (cont) $(this).html(cont[1] + cont[2]);

 });
&#13;
&#13;
&#13;

没有任何反应,但是如果我将第二个a(无效的一个)更改为一个范围,选择器可以找到并删除它?谢谢

=============================================== =======

更新,我已经采用m69s正则表达式并将其添加到jquery(元素不在DOM中,所以我不能使用getelementbyID)

&#13;
&#13;
==
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

这会删除非法的A元素,但它不会完全恢复合法的A元素,因为浏览器会删除第二个关闭的A标记。因此,链接中的某些文本现在可能会在其后面。 (如果你想避免链接为空,你可以将下一个单词移入其中。)

var elem = document.getElementsByTagName("P");
for (i = 0; i < elem.length; i++) {
    var cont = elem[i].innerHTML.match(/^(.*?<A[^>]+>.*?)<A[^>]+>.*?(<\/A>.*)$/i);
    if (cont) elem[i].innerHTML = cont[1] + cont[2];
}
<p>A simple text paragraph.</p>
<p>A paragraph with <a href="">a legal <a href="">ILLEGAL LINK</a> link</a> and some more text.</p>
<p>A paragraph with <a href="">a legal link</a> and some more text.</p>

答案 1 :(得分:0)

将文件另存为xhtml,浏览器应为您找到未关闭的标签。我不认为有一种方法可以在javascript中完成。