Подтвердить что ты не робот

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>

Это неверно?

4b9b3361

Ответ 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");
}

Кроме того, как упоминалось выше, вы должны использовать == или ===, а не =.