2012-03-28 3 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. Но только слово Black, которое появляется после H6, содержащего «Color»

меня это до сих пор:

$("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

Try с помощью adjacent selector:

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

Смотрите эту DEMO.

+4

Это изменит как 'li's, он только хочет один за'

Цвет
'. –

+0

Да, это то, что у меня было ранее, я хочу только изменить один экземпляр под цветом, содержащим H6. Thaks для получения времени, хотя –

+0

@Rocket tnx для указания, что исправлено это, почему ppl так стремятся дать DV – Rafay

6

Вы можете использовать что-то вроде этого:

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

Это находит соответствующий <h6>, содержащий "Colour", затем переходит к следующему брату (который является тегом <ul>, а затем внутри этого <ul>, он находит <li>, который содержит "Black" и обменивает его текстом на "Purple".

Вы можете увидеть его работы здесь: http://jsfiddle.net/jfriend00/rdSzC/

Смежные вопросы