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