2010-12-20 11 views

Odpowiedz

26

Można użyć .filter() wybierz elementy, które chcesz coś takiego:

$("someSelector").filter(function() { return $.data(this, "foo"); }); 

w tym przypadku, ponieważ jesteś sprawdzając wartość logiczną To bardzo proste, do sprawdzenia przed wartością wystarczy dodać porównanie, jak to:

$("someSelector").filter(function() { return $.data(this, "foo") == "value"; }); 
+1

Co jest zaletą korzystania '$ .data (this, 'foo')' na '$ (this) .data ("foo") '? –

+7

@Matt - Brak zmarnowanego obiektu jQuery :) –

+0

To nie działa ze mnie. Nie rozumiem, dlaczego oceniasz '$ .data (this," foo ") ==" value ";' dla mnie zadziałało to przez zastąpienie go '$ .data (this) .foo.id ==" idValue "; '. Dzięki za podpowiedź! Naprawdę mi pomogłem! – Xeroxoid

5

Nie jest możliwe tylko z data API bez zapętlenie poprzez każdego elementu w DOM, i sprawdzić, czy nie zawiera tego elementu danych o określonej wartości.

Jeśli dane są proste, być może można użyć atrybutów danych HTML5, które można przeszukiwać za pomocą selektorów.

$("selector").attr("data-key", "theKey"); 

Później zaznaczyć wszystkie obiekty, które mają atrybut o nazwie "data-key" o wartości true korzystając

$('[data-key="true"]') 
+0

dzięki bardzo. Zapomniałem, że jquery nie zawsze zapisuje te dane w elemencie :) – mrzmyr

Powiązane problemy