Выбор элементов по содержанию текста в jQuery

0

У меня есть список многих div. Каждый блок всегда следует этому шаблону, несколько раз на странице.

<div ...>
    <div ...>count</div>
    <div ...>Unread</div>
</div>

Цель состоит в том, чтобы проверить дочерний div, если счетчик не равен нулю, а затем изменить css. Иначе пропустите.

У них нет id, и имена классов меняются. Кто-то написал html, поэтому я не могу это улучшить.

Мой код, похоже, не выбирает div, который содержит "Непрочитанный". Он должен изменять цвет.

http://jsfiddle.net/ninmonkeys/5yDZb/

Если выбор использования contains("Unread") действительно сработал, я должен уметь брать брата с помощью родителя?

$("div:contains('Unread')").css("background-color:red !important;");
Теги:

3 ответа

1
Лучший ответ

Синтаксис css был неправильным, но я не думаю, что исправление только даст вам то, что вы хотите. Селектор :contains() соответствует родителям разделов, которые вы хотите. Вместо этого вы можете использовать filter:

http://jsfiddle.net/TPeSP/

$('div').filter(function() {
    return $(this).text() == 'Unread' && $(this).siblings('div').text() != "0";  
}).css("background-color", "red");
  • 0
    Я немного изменил его , это упростило мою родительскую логику, так как в итоге я выделил родительский div. - Я думал, что $(this).parent() выбрал бы родителя div, содержащего слово «Непрочитанные». Но мне пришлось использовать двух родителей. (Я понимаю синтаксический анализ xml на других языках, но я новичок в jQuery и javascript)
3

Ваша проблема заключается не в выборе элементов, а в использовании css:

http://jsfiddle.net/5yDZb/2/

.css("background-color", "red");

При установке значения .css принимает два параметра, первым является свойство, а второе - значением.

  • 1
    Как вы, ребята, делаете вещи так быстро? очень хорошо сделано.
1
$("div:contains('Unread')").css({"background-color":"red"});
  • 0
    Спасибо, я сделал это со своего телефона и не смог получить форматирование кода. :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню