jQuery删除内容为空的元素

Yun*_*lam 7 javascript jquery

我想删除没有内容的元素.例如,这是我的HTML标记:

我在jquery变量中有html标记说var myhtml,我不确定其中是否有任何特定的标签.

<h1>
    <u>
        <strong></strong>
    </u>
    <u>
        <strong>Read This Report Now
            <strong></strong> ??
        </strong>
    </u>
</h1>
Run Code Online (Sandbox Code Playgroud)

我们可以看到上面的标记

<u>
    <strong></strong>
</u>
Run Code Online (Sandbox Code Playgroud)

是空的,因此应该从标记中删除.假设我在变量中有上述标记myhtml.我怎样才能做到这一点?

我不确定该元素是否也是

"<u>" or "<em>" or "<i>" or "<div>" or "<span>"
Run Code Online (Sandbox Code Playgroud)

..它可以是任何东西.

Sna*_*rak 8

您可以搜索所有元素并删除哪些元素为空.

$('*').each(function(){ // For each element
    if( $(this).text().trim() === '' )
        $(this).remove(); // if it is empty, it removes it
});
Run Code Online (Sandbox Code Playgroud)

看看有多有用!: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]);
}
Run Code Online (Sandbox Code Playgroud)

见jsfiddle:http://jsfiddle.net/qtvjj3oL/1/

更新2:

根据你的评论,你有一个变量中的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
Run Code Online (Sandbox Code Playgroud)

它有效:http://jsfiddle.net/qtvjj3oL/6/


Bal*_*ran 6

尝试

 $("u").each(function () {      // if remove all, you can select all element $("*")           
    var x = $(this).text().trim();
    if (x == "") {
        $(this).remove();
    }
});
Run Code Online (Sandbox Code Playgroud)

如果您想删除所有内容,只需使用 选择器然后将其删除即可

DEMO

  • 你可以使用`$("*")` (2认同)