Muszę wiedzieć z jQuery, jeśli pewna wartość znajduje się na znaczniku <li> na <ul> z określoną tagiem:

<ul id="timeline">
<li>MyValue</li>
<li>MySecondValue</li>
</ul>

Jak mogę sprawdzić z jQuery, jeśli na przykład, MySecondvalue, jest już na <ul> za pomocą identyfikatora timeline? Dzięki!

2
pmerino 7 październik 2011, 23:36

4 odpowiedzi

Najlepsza odpowiedź
if ( $('ul li:contains("MySecondValue")').length ) {
    //exists
}
7
David Hellsing 7 październik 2011, 19:53
$("ul li").filter(function() {
    return $(this).text() == "MySecondValue";
}).length;

Jeśli ten wyrażenie zwraca 0, nie jest na liście. W przeciwnym razie jest.

7
josh3736 7 październik 2011, 19:39

Zrób coś takiego:

$('ul li').each(function(){ 
     if($(this).text()=='MySecondvalue') alert('already exists');
}
1
Brian Seim at EvoDynamic LLC 7 październik 2011, 19:41

Nie całkiem jQuery-ish, ale w zależności od liczby elementów do filtrowania, może to być najbardziej występujący:

function alreadyInTimeline(text) {
    return ($('#timeline').html().match(new RegExp('\>(' + text + ')\<')) !== null);
}

alert(alreadyInTimeline('MyValue'));

Por. Porównanie wydajności odpowiedzi podanych do tej pory dla dość małej osi czasu .

Edytuj: Zignoruj to, właśnie zaktualizowałem test JSPERF, aby użyć tych samych selektorów we wszystkich przypadkach i okazuje się, że się myliłem.

1
vzwick 7 październik 2011, 20:15