JQuery: проверка, чтобы увидеть, содержит ли div текст, затем действие
Я пытаюсь проверить jQuery, если div содержит некоторый текст, а затем добавляет класс, если он это делает.
Итак, я написал что-то вроде этого:
if( $("#field > div.field-item").text().indexOf('someText') = 0) {
$("#somediv").addClass("thisClass");
}
Я не заставляю это работать.
<div id="field"><div class="field-item">someText</div></div>
<div id="somediv"></div>
Это неверно?
Ответы
Ответ 1
Ваш код содержит две проблемы:
- Оператор равенства в JavaScript -
==
, а не =
.
-
jQuery.text()
объединяет все текстовые узлы согласованных элементов в одну строку. Если у вас есть два последовательных элемента, первый из которых содержит 'some'
, а второй содержит 'Text'
, тогда ваш код будет неправильно думать, что существует элемент, содержащий 'someText'
.
Вместо этого предлагаю следующее:
if ($('#field > div.field-item:contains("someText")').length > 0) {
$("#somediv").addClass("thisClass");
}
Ответ 2
Да, я теперь заставил думать за меня. И все работает отлично !!!
if($("div:contains('CONGRATULATIONS')").length)
{
$('#SignupForm').hide(500);
}
Ответ 3
if( $("#field > div.field-item").text().indexOf('someText') >= 0)
Некоторые браузеры будут включать пробелы, другие - нет. >=
здесь уместно. В противном случае равенство равно двойному значению ==
Ответ 4
Айман прав, но вы можете использовать его так:
if( $("#field > div.field-item").text().indexOf('someText') >= 0) {
$("#somediv").addClass("thisClass");
}
Ответ 5
Почему бы просто не
var item = $('.field-item');
for (var i = 0; i <= item.length; i++) {
if ($(item[i]).text() == 'someText') {
$(item[i]).addClass('thisClass');
//do some other stuff here
}
}
Ответ 6
Вы можете попробовать селектор contains
:
if ($("#field > div.field-item:contains('someText')").length) {
$("#somediv").addClass("thisClass");
}
Кроме того, как упоминалось выше, вы должны использовать == или ===, а не =.