找到不包含href属性的锚标记的最佳方法是什么?

时间:2014-11-25 00:14:46

标签: jquery anchor

我有一个html字符串..其中的一些锚标签没有href属性(没有href属性且没有任何值)。我试图从HTML字符串中删除这些标记

示例:

<div class="parsys ReferenceA"><div class="parbase section reference"><div style="display:inline;" class="cq-dd-paragraph"><div class="warrantyinfo warrantyinfo_3"> 
 <link rel="stylesheet" href="http://test.com/media/test.css" type="text/css"> 
         <div class="box note warranty-info hidebox"> 
                 <p><a name="test" data-cqpath="234492921271682679940756642751399440576;2014296"></a><b>some text</p> 
         </div> 
        </div> 
</div> 
</div> 
<div class="parbase section reference"><div style="display:inline;" class="cq-dd-paragraph"><div class="warrantyinfo"> 
 <link rel="stylesheet" href="http://test.com/media/test.css" type="text/css"> 
         <div class="box note warranty-info hidebox"> 
                 <p><a name="test" data-cqpath="84618115959711848855398939109764576374;2014212"></a>some text</p> 
         </div> 
        </div> 
</div> 
</div> 
<div class="parbase section reference"><div style="display:inline;" class="cq-dd-paragraph"><div class="warrantyinfo_0 warrantyinfo"> 
 <link rel="stylesheet" href="http://test.com/media/test.css" type="text/css"> 
         <div class="box note warranty-info hidebox"> 
                 <p><b>Bsome text<br> 
<br> 
<b>some text/p> 
         </div> 
        </div> 
</div> 
</div> 
<div class="parbase section reference"><div style="display:inline;" class="cq-dd-paragraph"><div class="warrantyinfo"> 
 <link rel="stylesheet" href="http://test.com/media/test.css" type="text/css"> 
         <div class="box note warranty-info hidebox"> 
                 <p>some text<br> 
</p> 
         </div> 
        </div> 
</div> 
</div> 
<div class="parbase section reference"><div style="display:inline;" class="cq-dd-paragraph"><div class="warrantyinfo"> 
 <link rel="stylesheet" href="http://test.com/test,css" type="text/css"> 
         <div class="box note warranty-info hidebox"> 
                 <p>some text</p> 
<p></p> 
         </div> 
        </div> 
</div> 
</div> 
</div>

我尝试了以下代码,但没有工作

data是ajax请求返回的html字符串。

var newHtml = $('<div>' + data + '</div>');
newHtml.find("a:not([href])").replaceWith(function() { return this.childNodes; });
var content = newHtml.html();

赞赏任何意见..

更新

添加了示例html。

由于某些原因,空标签根本没有被替换。

http://jsfiddle.net/8WpDn/51/

如果我检查输出html,我仍然可以看到下面的emppty标签

<p><a name="test" data-cqpath="84618115959711848855398939109764576374;2014212"></a>some text</p>

2 个答案:

答案 0 :(得分:0)

您的方法works

正如David Thomas所说,JQuery已经实现了你在unwrap()所做的事情。

newHtml.find("a:not([href])").contents().unwrap(),请参阅example

编辑:我看到编辑提到的空链接问题,但只有unwrap()!你的方法really does work! :)

答案 1 :(得分:-2)

尝试.remove

newHtml.find("a:not([href])").remove();