2012-03-28 5 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로 조작하려고합니다.

내가 얻고 싶은 것은 단어 BlackPurple으로 변경할 수 있다는 것입니다. 그러나 "컬러"

나는 지금까지이 포함 된 H6 후에 만 ​​나타납니다 단어 Black :

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

이 그러나 작동하지 않습니다 ... 왜가?

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

DEMO를 참조하십시오 adjacent selector 사용

답변

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

또는 모든 하나 선택 문자열 :

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

보십시오.

+4

이 모두'li's을 바꿀 것입니다, 그는 단지'

컬러
'후 하나를 원한다. –

+0

예, 이전에 가지고 있던 것입니다. H6 아래에있는 하나의 인스턴스 만 변경하려고합니다. 탁월한 시간을내어 주셔서 감사합니다. –

+0

@Rocket tnx가 그것을 고쳐주었습니다. 이유는 ppl이 DV에게 열의를 갖는 이유입니다. – Rafay

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> 발견을 "Colour"으로 변경 한 다음 다음 형제 (<ul> 태그 인 경우 <ul>)로 이동하면 "Black"이 포함 된 <li>이 발견되어 해당 텍스트가 "Purple"으로 변경됩니다.

당신이 여기서 일 볼 수 있습니다 http://jsfiddle.net/jfriend00/rdSzC/