我有以下标记。
<h6>Brand</h6>
<ul>
<li>Orange</li>
<li>Black</li>
<li>Green</li>
</ul>
<h6>Colour</h6>
<ul>
<li>Green</li>
<li>Blue</li>
<li>Black</li>
<li>Orange</li>
</ul>
我无法更改或物理添加到此标记中,因此尝试使用jQuery进行操作。
我想要实现的目标是能够将单词Black
更改为Purple
。但只有在Black
包含“颜色”
H6
到目前为止,我有这个:
$("h6:contains('Colour'):.jqueryCheck:contains('Black')").html("Purple");
然而这不起作用......为什么不呢?
答案 0 :(得分:13)
$("h6:contains('Colour')").next('ul').children("li:contains('Black')").html("Purple");
或全部作为一个选择器字符串:
$("h6:contains('Colour') + ul li:contains('Black')").html("Purple");
答案 1 :(得分:6)
尝试使用adjacent selector:
$("h6:contains('Colour')+ ul li:contains('Black')").text('Purple');
请参阅此 DEMO 。
答案 2 :(得分:6)
您可以使用以下内容:
$("h6:contains('Colour')").next().find("li:contains('Black')").text('Purple');
这会找到包含<h6>
的相应"Colour"
,然后前进到下一个兄弟(<ul>
标记,然后在<ul>
内,找到{ {1}}包含<li>
并将该文字更改为"Black"
。
您可以在此处查看:http://jsfiddle.net/jfriend00/rdSzC/
答案 3 :(得分:3)
$('h6:contains("Colour")').next('ul').children('li:contains("Black")').text("Purple");