2012-03-28 28 views
7

Mam następujące oznaczenia.Znajdowanie określonych elementów za pomocą 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> 

Nie mogę zmienić lub fizycznie dodać do tego znacznika, dlatego próbuję manipulować przy pomocy jQuery.

To, co chcę osiągnąć, to zmienić słowo Black na Purple. Ale tylko słowo Black która pojawia się po H6 zawierającej „Kolor”

mam to do tej pory:

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

To jednak nie działa ... Dlaczego nie?

Odpowiedz

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

Albo cały ciąg jako jeden selektor:

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

Spróbuj użyć adjacent selector:

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

Zobacz ten DEMO.

+4

to zmieni zarówno 'li's, tylko chce się jeden po'

Kolor
'. –

+0

Tak, właśnie to miałem wcześniej, chcę zmienić tylko jedną instancję pod kolorem H6. Thaks za poświęcenie czasu: –

+0

@Rocket tnx za wskazanie, że to naprawione, dlaczego ppl są tak chętni, aby dać DV – Rafay

6

Można użyć coś takiego:

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

ten znajdzie odpowiednią <h6>, który zawiera "Colour", a następnie przechodzi do następnego elementu równorzędnego (który jest znacznikiem <ul>, a następnie wewnątrz tego <ul>, znajduje się <li>, który zawiera "Black" i zmienia ten tekst na "Purple".

Widać to działa tutaj: http://jsfiddle.net/jfriend00/rdSzC/

Powiązane problemy