检查 DOM 元素和子元素是否包含任何文本 [JS 或 jQuery]

Sim*_*nut 5 html javascript css jquery dom

我希望能够检查元素中是否包含任何文本。如果元素中没有任何文本,我希望能够删除该元素。

但是,这个 dom 元素可能包含一个或多个子元素,而这些子元素也可能包含其他子元素。所以我希望能够遵循元素的 dom 树并搜索其中的所有元素以查找文本。

像这样的东西:

<div id="myElement">
  <span></span>
  <span></span>
  <span>
    <span></span>
    <span>b</span>
  </span>
</div>
Run Code Online (Sandbox Code Playgroud)

现在 div 直接没有任何文本,但是它的孩子有。如何检查整个 div 中是否有任何文本?

编辑:

显然我&#8203;在其中一个跨度中有一个 字符,我知道它是零宽度的空白。所以基本上即使没有文本,jQuery text() 也会将它作为一个来查找并返回 false。

我该如何解决?

ish*_*ood 2

jQuery 的text()方法包括后代,因此:

$('.my-element-class').each(function() {
    if ( $(this).text() === '' ) {
        $(this).remove();
    }
});
Run Code Online (Sandbox Code Playgroud)

要单独检查所有后代元素,我们必须变得更复杂一些:

$('.my-element-class').find('span').andSelf().each(function() {
    ...
Run Code Online (Sandbox Code Playgroud)

http://api.jquery.com/text/