循环通过Divs并检查Child Div是否有内容

时间:2016-06-22 18:11:14

标签: jquery if-statement each addclass

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

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

我在这里错过了一些简单的东西,可以随便摇一摇。问题是它正在为所有div添加“has-content”类。

减少测试用例:JSFiddle

谢谢大家。

1 个答案:

答案 0 :(得分:4)

您需要实际检查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/