2012-03-28 103 views
7

我有以下标记。使用jQuery查找特定元素

<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。但只有含“颜色”

我有这个迄今为止H6后出现的单词Black

$("h6:contains('Colour'):.jqueryCheck:contains('Black')").html("Purple"); 

然而,这并不正常工作......为什么不呢?

回答

13
$("h6:contains('Colour')").next('ul').children("li:contains('Black')").html("Purple"); 

或者全部作为一个选择的字符串:

$("h6:contains('Colour') + ul li:contains('Black')").html("Purple"); 
6

尝试使用adjacent selector

$("h6:contains('Colour')+ ul li:contains('Black')").text('Purple'); 

看到这个DEMO

+4

这将改变所有的'li's,他只想'

颜色
'一前一后。 – 2012-03-28 15:14:20

+0

是的,这是我以前所做的,我只想在包含Color的H6下更改一个实例。泰克斯需要时间,虽然 – 2012-03-28 15:17:16

+0

@火箭tnx指出,固定它,为什么脂肪酶如此渴望给DV的 – Rafay 2012-03-28 15:18:25

3
$('h6:contains("Colour")').next('ul').children('li:contains("Black")').text("Purple"); 

Fiddle

6

您可以使用这样的事情:

$("h6:contains('Colour')").next().find("li:contains('Black')").text('Purple');​ 

此找到合适的<h6>包含012然后前进到下一个同级(<ul>标记,然后在<ul>之内,它找到<li>,其中包含"Black"并将该文本更改为"Purple"

你可以看到它在这里工作:http://jsfiddle.net/jfriend00/rdSzC/