2016-06-22 4 views
1

Я ищу, чтобы пройти через divs, проверить, есть ли у каждого контент в пределах своего дочернего div, если так добавить класс в div.Loop Through Divs и проверка, если у дочернего Div есть контент

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

Я пропустил что-то простое здесь и смог сделать сотрясением. Проблема в том, что он добавляет класс «has-content» ко всем div.

уменьшенного тест: JSFiddle

Спасибо всем.

+0

Ваш единственный тест здесь, чтобы проверить, если есть один или более 'divs' в пределах pa аренда 'div'. Ничего не проверяет их содержание. – melancia

+0

Возможный дубликат [Как проверить, является ли HTML-элемент пустым с помощью jQuery?] (Http://stackoverflow.com/questions/6813227/how-do-i-check-if-an-html-element-is- empty-using-jquery) – 4castle

ответ

3

Вам нужно проверить, есть ли текст в 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/

+0

В качестве альтернативы и для большей гибкости используйте '.html()'. Также может использоваться операция '.trim()'. – 4castle

+0

@ 4castle хорошая точка, но я не уверен, что первоначальное намерение - просто проверить, есть ли текст в div, или если на самом деле есть куча dom-узлов и т. Д. –

+1

@ Jonathan.Brink no, это идеально. Только то, что я искал. Спасибо за нарушение. Я пытался проверить, есть ли текст в div. –

 Смежные вопросы

  • Нет связанных вопросов^_^