我想删除没有内容的元素。例如,这是我的HTML标记:
我在jquery变量中有html标记说var myhtml,我不确定其中是否有任何特定的标记。
<h1>
<u>
<strong></strong>
</u>
<u>
<strong>Read This Report Now
<strong></strong> ??
</strong>
</u>
</h1>
我们可以看到上面的标记
<u>
<strong></strong>
</u>
为空,因此应从标记中删除。假设我在变量myhtml
中有上述标记。我怎么能这样做?
我不确定该元素是否
"<u>" or "<em>" or "<i>" or "<div>" or "<span>"
..它可以是任何东西。
答案 0 :(得分:8)
您可以搜索所有元素并删除哪些元素为空。
$('*').each(function(){ // For each element
if( $(this).text().trim() === '' )
$(this).remove(); // if it is empty, it removes it
});
看看它是如何运作的!:http://jsfiddle.net/qtvjj3oL/
<强>已更新强>:
您也可以在没有jQuery
的情况下执行此操作:
var elements = document.getElementsByTagName("*");
for (var i = 0; i < elements.length; i++) {
if( elements[i].textContent.trim() === '' )
elements[i].parentNode.removeChild(elements[i]);
}
参见jsfiddle:http://jsfiddle.net/qtvjj3oL/1/
更新2 :
根据你的comment,你有变量中的html,你可以这样做:
// the html variable is the string wich contains the html
// We make a fake html
var newHtml = document.createElement('html');
var frag = document.createDocumentFragment();
newHtml.innerHTML = html;
frag.appendChild(newHtml);
var elements = newHtml.getElementsByTagName("*");
// Remove the emptys elements
for (var i = 0; i < elements.length; i++) {
if( elements[i].textContent.trim() === '' )
elements[i].parentNode.removeChild(elements[i]);
}
html = newHtml.innerHTML; // now reset html variable
答案 1 :(得分:6)
试
$("u").each(function () { // if remove all, you can select all element $("*")
var x = $(this).text().trim();
if (x == "") {
$(this).remove();
}
});
如果您想删除所有内容,只需使用 empty 选择器然后将其删除
答案 2 :(得分:1)
<强> JQuery的强>
它搜索所有元素并删除所有空白元素(即:<span></span>
),所有包含简单空格的元素(即:<span> </span>
)和仅包含
的所有元素(即:<span> </span>
)
$(".mydiv *").each(function() {
var $this = $(this);
if($this.html().replace(/\s| /g, '').length == 0)
$this.remove();
});
答案 3 :(得分:1)
简单地:
$( ":empty" ).remove();
或
$( "u:empty" ).remove();
如果具体
答案 4 :(得分:1)
您可以将.filter()
和remove()
用于此
$('*').filter(function() {
return $(this).text().trim() == ""
}).remove();
答案 5 :(得分:0)
如果你的html已经在变量myhtml
中,那么你将如何做到这一点:
$('*', myhtml).filter(function() {
return $(this).text() == '';
}).remove();