我有一个页面,其中一些div
包含内容,而另一些只有BR
标记,我正在尝试删除div只有BR标记的div
,以下是html格式
有些像这样
<div>
<br>
</div>
有些人喜欢这个
<div>
<br>
Text goes here text goes here..Text goes here text goes here.. Text goes here text goes here..
</div>
据我所知,我可以找到空白div并轻松删除它,但很难检查内部BR
标记并删除,有人可以帮忙!
我试着像这样检查空白div
if(
$('div').is(':empty')) {
$(this).remove();
}
答案 0 :(得分:5)
:empty
具有div
元素, br
选择器无效。
您可以使用.filter()
获取所有div
元素,该元素没有text()
,然后才能使用remove()
。
$('div').filter(function() {
return $(this).text().trim().length == 0;
}).remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<br>Text goes here text goes here..Text goes here text goes here.. Text goes here text goes here..
</div>
<div>
<br>
</div>
答案 1 :(得分:1)
使用jQuery.filter
并测试textContent
的{{1}}!
element
$('div').filter(function() {
return this.textContent.trim() === '';
}).remove();
答案 2 :(得分:1)
使用$("div").text().trim()
示例代码段:
if ($("div").text().trim() === "") {
$("div").html("hellk")
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<br>
</div>
&#13;
答案 3 :(得分:1)
Pure-JS解决方案:找到所有BR
元素,这些元素是其父DIV
的唯一子元素,然后迭代生成的集合并删除每个BR
元素的父元素父级不包含非空白文本:
var brElements = document.querySelectorAll('DIV > BR:first-child:last-child');
Array.from(brElements).forEach(function(br) {
var div = br.parentNode;
if (0 === div.textContent.trim().length) {
div.parentNode.removeChild(div);
}
});
// For older browsers not supporting `Array.from(arrayLike)`,
// use `Array.prototype.slice.call(arrayLike, 0)`.
这也可能比过滤文档中的所有DIV
元素更快。
答案 4 :(得分:0)
$('div').each(function(){
if($(this).text.trim().length == 0) {
$(this).remove();
}
})