循环遍历 div 并检查子 div 是不是有内容

Posted

技术标签:

【中文标题】循环遍历 div 并检查子 div 是不是有内容【英文标题】:Loop Through Divs and Check If Child Div Has Content循环遍历 div 并检查子 div 是否有内容 【发布时间】:2016-10-24 19:55:27 【问题描述】:

我正在寻找循环遍历 div,检查每个在其特定子 div 中是否有内容,如果有,则向 div 添加一个类。

  $('.img-banner').each(function( index, element ) 
    if ( $(element).find('.img-banner-content').length > 0 ) 
      $(element).addClass("has-content");
    
  );

我在这里遗漏了一些简单的东西,可以通过摇晃来完成。问题是它将类“has-content”添加到所有 div。

精简测试用例:JSFiddle

谢谢大家。

【问题讨论】:

您在这里唯一的测试是检查父div 中是否有一个或多个divs。没有任何东西检查他们的内容。 How do I check if an html element is empty using jQuery?的可能重复 【参考方案1】:

您需要实际检查 div 中是否有文本。

$(this).find('.img-banner-content').length 将始终返回 true,因为它实际上并不检查该 dom 节点是否有任何 innerHTML,只是检查 dom-ref 是否存在。

所以替换:

if ( $(this).find('.img-banner-content').length > 0 )

与:

if ( $(element).find('.img-banner-content').text().length > 0 )

把它放在一起:

$(document).ready(function () 
  $('.img-banner').each(function( index, element ) 
    if ( $(element).find('.img-banner-content').text().length > 0 ) 
      $(element).addClass("has-content");
    
  );
);

https://jsfiddle.net/jg0w257q/

【讨论】:

或者,为了获得更大的灵活性,请使用.html()。也可以使用$.trim() 操作。 @4castle 好点,但我不确定最初的意图是否只是检查 div 中是否有文本,或者那里实际上是否有一堆 dom 节点和东西跨度> @Jonathan.Brink 不,这是完美的。正是我想要的。谢谢你打破了。我想检查 div 中是否有文本。

以上是关于循环遍历 div 并检查子 div 是不是有内容的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 实现简单的星级评分功能

循环遍历嵌套的 js 对象并使用 Jquery 使用自定义 html 附加 div

如何使用 jQuery 遍历 div 的子元素?

检查 div 内容是不是已经存在于另一个 div 中?

设置子div在父div中绝对置于底部之后覆盖了父div里的内容怎么办?

Javascript 检查类名是不是已添加到 DIV 并执行任务