Javascript jQuery each()只命中第一个元素

Javascript jQuery each()只命中第一个元素,javascript,jquery,html,Javascript,Jquery,Html,尝试循环遍历某些元素,如果发现它们的父div holder为空,则删除它们。我使用下面的jquery代码,出于某种原因,它只删除第一个匹配的元素,之后没有 $('.sylsection p').each( function() { if ( $(this).text() == '' ) { $(this).closest('.sylsection').remove(); } }); 你知道为什么会这样吗 HTML结构类似于: <div class="sylsection"&g

尝试循环遍历某些元素,如果发现它们的父div holder为空,则删除它们。我使用下面的jquery代码,出于某种原因,它只删除第一个匹配的元素,之后没有

$('.sylsection p').each( function() {
  if ( $(this).text() == '' ) {
  $(this).closest('.sylsection').remove();
  }
});
你知道为什么会这样吗

HTML结构类似于:

<div class="sylsection">
  <h6>Content</h6>
  <hr>
  <p>Content</p>
</div>

<div class="sylsection">
  <h6></h6>
  <hr>
  <p></p>
</div>

<div class="sylsection">
  <h6>Content</h6>
  <hr>
  <p>Content</p>
</div>

<div class="sylsection">
  <h6></h6>
  <hr>
  <p></p>
</div>

<div class="sylsection">
  <h6>Content</h6>
  <hr>
  <p>Content</p>
</div>

<div class="sylsection">
  <h6></h6>
  <hr>
  <p></p>
</div>

内容

内容


内容
内容


内容
内容


不要介意html标记中的错误。稍后会将其移动到外部css文件

干杯很好:

$('.sylp')。每个(函数(){
如果($(this).text()=''){
$(this).closest('.sylsection').remove();
}
});

内容01

内容02

标题01

内容03
内容04

标题02

内容05
内容06

标题03


我尝试使用jQuery 1.12.4()执行代码,它似乎工作正常,请参见以下JSFIDLE:

函数和html是相同的:

$('.sylsection p').each( function() {
    if ( $(this).text() == '' ) {
        $(this).closest('.sylsection').remove();
  }
});

仅将.each()函数附加到sylsection类中,.each()允许您仅迭代兄弟姐妹elementsHi@korwalskiy。不幸的是,我仍然遇到相同的问题。在第一次危机之后,它似乎已经摆脱了困境。最初我认为它与.remove()函数有关,所以尝试了.css('display','none')和.hide(),但这也不起作用。这就是我暗示的:$('.sylsection').each(函数(){if($)(This.children('p').text()=''){$(This.remove();});这是
实际的
HTML输出吗?我询问的唯一原因是,如果任何
元素至少包含一个空格,则字符串不会为空。如果在比较中修剪文本(即,
if($(this).text().trim()='')
),它是否正常工作?@korwalskiy它仍然将自己限制在第一个,很遗憾。你完全正确。根据@marl.hch的评论,我又看了一眼原始html代码,发现一些

比低了一行。即使在网站上显示为空,也没有被认为是空的。现在它已修复,代码运行良好。谢谢大家的意见,不客气。您还可以使用
if((this.innerText='')
(忽略任何空格)检查
的内容-vanilla js,不需要jquery。显然,我们同时编写了它,您在我编写我的(并尝试JSFIDLE)时插入了答案。。。看看时间。。。