<div id="test"></div>
<script>
$(document).ready(function() {
alert($('#test').id);
});
</script>
Dlaczego powyższe nie działa i jak mam to zrobić?
jquery
jquery-selectors
Strachofawhackplanet
źródło
źródło
Odpowiedzi:
Sposób jQuery:
W twoim przykładzie:
Lub poprzez DOM:
lub nawet :
a powodem użycia
$('#test').get(0)
JQuery lub nawet$('#test')[0]
jest to, że$('#test')
jest to selektor JQuery i zwraca tablicę () wyników, a nie pojedynczy element, dzięki swojej domyślnej funkcjonalnościalternatywą dla selektora DOM w jquery jest
który różni się
.attr()
i$('#test').prop('foo')
pobiera określonąfoo
właściwość DOM , podczas gdy$('#test').attr('foo')
pobiera określonyfoo
atrybut HTML i można znaleźć więcej szczegółów na temat różnic tutaj .źródło
$('#test').id()
.$('selector').attr('id')
zwróci identyfikator pierwszego dopasowanego elementu. Odniesienia .Jeśli dopasowany zestaw zawiera więcej niż jeden element, możesz użyć konwencjonalnego
.each
iteratora, aby zwrócić tablicę zawierającą każdy z identyfikatorów:Lub, jeśli chcesz zrobić trochę bardziej grube, możesz uniknąć opakowania i użyć
.map
skrótu .źródło
retval.push($(this).attr('id'))
można napisaćretval.push(this.id)
return $('.selector').map(function(i, dom){ return $(dom).attr('data-id'); })
id
jest własnością HTMLElement
. Jednak podczas pisania$("#something")
zwraca obiekt jQuery, który otacza pasujące elementy DOM. Aby odzyskać pierwszy pasujący element DOM, zadzwońget(0)
W tym elemencie natywnym można wywołać identyfikator lub dowolną inną natywną właściwość lub funkcję DOM.
To jest powód, dlaczego
id
nie działa w twoim kodzie.Alternatywnie użyj
attr
metody jQuery, ponieważ inne odpowiedzi sugerują uzyskanieid
atrybutu pierwszego pasującego elementu.źródło
Powyższe odpowiedzi są świetne, ale w miarę ewolucji jquery .. możesz także:
źródło
attr()
został dodany w wersji 1.0, aprop()
został dodany w wersji 1.6, więc zakładam , że twój komentarz byłprop()
nowy.attr
), czy potencjalnie zmodyfikowane przez skrypt (prop
). Jeśli nie są faktycznie modyfikującid
atrybut każdego elementu za pomocą klienta skrypt bocznej,prop
iattr
są identyczne.Niektóre kody kontrolne są oczywiście wymagane, ale łatwe do wdrożenia!
źródło
.id
nie jest prawidłową funkcją jquery. Musisz użyć tej.attr()
funkcji, aby uzyskać dostęp do atrybutów posiadanych przez element. Możesz użyć.attr()
obu, aby zmienić wartość atrybutu, określając dwa parametry lub uzyskać wartość, określając jeden.http://api.jquery.com/attr/
źródło
Jeśli chcesz uzyskać identyfikator elementu, powiedzmy za pomocą selektora klasy, kiedy zdarzenie (w tym przypadku zdarzenie kliknięcia) zostało uruchomione na tym konkretnym elemencie, wówczas następujące zadanie wykona:
źródło
$('#test').attr('id')
W twoim przykładzie:źródło
Wygląda na to, że nie było rozwiązania i chciałbym zaproponować własne rozwiązanie, będące rozwinięciem prototypu JQuery. Umieszczam to w pliku pomocnika, który jest ładowany po bibliotece JQuery, stąd sprawdzanie
window.jQuery
Może nie jest idealny, ale może być początkiem włączenia do biblioteki JQuery.
Zwraca wartość pojedynczego ciągu lub tablicę wartości ciągów. Tablica wartości ciągów, dla zdarzenia zastosowano selektor wieloelementowy.
źródło
$('#test')
zwraca obiekt jQuery, więc nie można po prostu użyćobject.id
go pobraćId
musisz użyć
$('#test').attr('id')
, który zwraca wymaganeID
wartość elementuMożna to również zrobić w następujący sposób,
$('#test').get(0).id
co jest równedocument.getElementById('test').id
źródło
$('#test')[0].id
to samo co.get(0)
Może przydatne dla innych, którzy znajdą ten wątek. Poniższy kod będzie działał tylko wtedy, gdy już używasz jQuery. Funkcja zawsze zwraca identyfikator. Jeśli element nie ma identyfikatora, funkcja generuje identyfikator i dołącza go do elementu.
Jak używać:
źródło
Używając powyższego kodu możesz uzyskać id.
źródło
To stare pytanie, ale od 2015 r. Może faktycznie działać:
Możesz także wykonywać zadania:
Tak długo, jak zdefiniujesz następującą wtyczkę JQuery:
Co ciekawe, jeśli
element
jest elementem DOM, to:źródło
Ponieważ identyfikator jest atrybutem, możesz go uzyskać za pomocą
attr
metody.źródło
Może to być identyfikator elementu, klasa lub automatyczne użycie parzystości
źródło
Ważne: jeśli tworzysz nowy obiekt za pomocą jQuery i wiążesz zdarzenie, MUSISZ użyć prop, a nie attr , tak jak to:
$("<div/>",{ id: "yourId", class: "yourClass", html: "<span></span>" }).on("click", function(e) { alert($(this).prop("id")); }).appendTo("#something");
źródło
To w końcu rozwiąże twoje problemy:
Powiedzmy, że masz wiele przycisków na stronie i chcesz zmienić jeden z nich za pomocą jQuery Ajax (lub nie ajax) w zależności od ich identyfikatora.
powiedzmy również, że masz wiele różnych typów przycisków (do formularzy, do zatwierdzenia i do podobnych celów) i chcesz, aby jQuery traktowało tylko przyciski „podobne”.
oto kod, który działa: jQuery będzie traktować tylko przyciski należące do klasy .cls-hlpb, pobierze identyfikator klikniętego przycisku i zmieni go zgodnie z danymi pochodzącymi z ajax.
kod został pobrany z w3schools i zmieniony.
źródło
źródło
nie odpowiada OP, ale może być interesujący dla innych:
.id
w tym przypadku możesz uzyskać dostęp do pola:źródło