Javascript jQuery each()只命中第一个元素
尝试循环遍历某些元素,如果发现它们的父div holder为空,则删除它们。我使用下面的jquery代码,出于某种原因,它只删除第一个匹配的元素,之后没有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
$('.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)时插入了答案。。。看看时间。。。