在页面上给出以下HTML:
<div class='test'>
<p><span id='id1' class='test1 test2 test3'>test text 1</span></p>
<p><span id='id2' class='test1 test2'>test text 2</span></p>
<span class='test2'> </span>
<p><span id='id3' class='test1'>test text 3</span></p>
<p><span id='id4' class='test1 test3 test2'>text4</span></p>
</div>
如何使用jQuery完全删除第4行<span class='test2'> </span>
?
如果有帮助,我可以通过正则表达式找到它:
var re = new RegExp("<span[^>]*test2[^>]*> </span[^>]*?>");
我可以使用jQuery找到并删除该类的任何节点:
$("span[class*='test2']").remove();
但这会删除所有具有“test2”类的节点,这不是我想要的;我只想删除其中包含单个空格的那个。 $("span[class*='test2']:empty").remove();
不起作用,因为该节点不为空,并且有一个空格。
我觉得我非常接近,但我错过了一些东西;我希望结果如下:
<div class='test'>
<p><span id='id1' class='test1 test2 test3'>test text 1</span></p>
<p><span id='id2' class='test1 test2'>test text 2</span></p>
<p><span id='id3' class='test1'>test text 3</span></p>
<p><span id='id4' class='test1 test3 test2'>text4</span></p>
</div>
任何线索?
答案 0 :(得分:3)
$('span').each(function(){
var str = $(this).text().replace(/ /g,'');
if (str.length < 1){
$(this).remove();
}
});
答案 1 :(得分:2)
这应该这样做:
$("span[class*='test2']").filter
(
function() {
return $(this).text() === " ";
}
).remove();
答案 2 :(得分:0)
我认为你不能匹配任何空格,因为:contains()不能做正则表达式。你可以循环它们,或编写自己的过滤器。
$.extend($.expr[':'], {
whitespace: function(el) {
return $(el).text().search(/\s+/);
}
});
答案 3 :(得分:0)
对于使用咖啡脚本并希望删除带有一个或多个空格的标签的人。
for paragraph in $('p')
str = $(paragraph).text().replace(/\s+/,'')
if str.length < 1
$(paragraph).remove();