2012-03-28 100 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/