Mam niemożliwie trudny moment, aby dowiedzieć się, jak uzyskać rzeczywistą DOMElement z selektora jquery. Przykładowy kod:
<input type="checkbox" id="bob" />
var checkbox = $("#bob").click(function() { //some code } )
i w innym fragmencie kodu próbuję ustalić sprawdzoną wartość pola wyboru.
if ( checkbox.eq(0).SomeMethodToGetARealDomElement().checked )
//do something.
I proszę, nie chcę robić:
if ( checkbox.eq(0).is(":checked"))
//do something
To mnie kręci wokół pola wyboru, ale innym razem potrzebowałem prawdziwego DOMElement.
javascript
jquery
dom
BillRob
źródło
źródło
applyBindings
oczekuje, że węzeł DOM nie będzie selektorem jQuery. To pytanie (i odpowiedzi) jest dokładnie tym, czego potrzeba.Odpowiedzi:
Możesz uzyskać dostęp do surowego elementu DOM za pomocą:
lub prościej:
Jednak tak naprawdę nie jest to potrzebne (z mojego doświadczenia). Weź przykład z pola wyboru:
jest bardziej „jquery'ish” i (imho) bardziej zwięzły. Co jeśli chcesz je ponumerować?
Niektóre z tych funkcji pomagają również maskować różnice w przeglądarkach. Niektóre atrybuty mogą się różnić. Klasycznym przykładem są wywołania AJAX. Aby zrobić to poprawnie w surowym JavaScript, ma około 7 rezerwowych przypadków
XmlHttpRequest
.źródło
$('a').get(0).nodeType==1
w Firebug na tej stronie, czy to prawda, czy nie?$('<input type=checkbox>').appendTo('body').get(0).checked
Edycja: wygląda na to, że pomyliłem się, zakładając, że nie można uzyskać elementu. Jak napisali tutaj inni, możesz to uzyskać za pomocą:
Zweryfikowałem, że faktycznie zwraca dopasowany element DOM.
źródło
Musiałem uzyskać element jako ciąg.
Co da ci coś takiego:
... jako ciąg zamiast elementu DOM.
źródło
Jeśli potrzebujesz bezpośredniej interakcji z elementem DOM, dlaczego po prostu nie użyć
document.getElementById
ponieważ, jeśli próbujesz wejść w interakcję z konkretnym elementem, prawdopodobnie znasz identyfikator, ponieważ zakładając, że nazwa klasy jest tylko na jednym elemencie, lub inna opcja ma tendencję do ryzykować.Ale zazwyczaj zgadzam się z innymi, że w większości przypadków powinieneś nauczyć się robić to, czego potrzebujesz, korzystając z tego, co daje ci jQuery, ponieważ jest to bardzo elastyczne.
AKTUALIZACJA: Na podstawie komentarza: Oto post z dobrym wyjaśnieniem: http://www.mail-archive.com/[email protected]/msg04461.html
Zwróci wartość, jeśli jest zaznaczona, lub 0, jeśli nie jest.
$(this).val()
po prostu sięga do domu i otrzymuje atrybut „wartość” elementu, niezależnie od tego, czy jest zaznaczony.źródło