<div id="test"></div>
<script>
$(document).ready(function() {
alert($('#test').id);
});
</script>
Dlaczego powyższe nie działa i jak mam to zrobić?
Sposób jQuery:
$('#test').attr('id')
W twoim przykładzie:
$(document).ready(function() {
console.log($('#test').attr('id'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="test"></div>
Lub poprzez DOM:
$('#test').get(0).id;
lub nawet :
$('#test')[0].id;
a powodem użycia $('#test').get(0)
w JQuery lub nawet $('#test')[0]
jest to, że $('#test')
jest selektorem JQuery i zwraca tablicę() wyników, a nie pojedynczy element przez swoją domyślną funkcjonalność
alternatywą dla selektora DOM w jquery jest
$('#test').prop('id')
który różni się od .attr()
i $('#test').prop('foo')
łapie określoną właściwość DOM foo
, podczas gdy $('#test').attr('foo')
łapie określony atrybut HTML foo
i możesz znaleźć więcej szczegółów na temat różnic tutaj.
$('selector').attr('id')
zwróci id pierwszego dopasowanego elementu. Odnośnik.
Jeśli twój dopasowany zestaw zawiera więcej niż jeden element, możesz użyć konwencjonalnego .each
iterator, aby zwrócić tablicę zawierającą każdy z id:
var retval = []
$('selector').each(function(){
retval.push($(this).attr('id'))
})
return retval
Lub, jeśli chcesz się trochę bardziej postarać, możesz uniknąć wrappera i użyć .map
skrót.
return $('.selector').map(function(index,dom){return dom.id})
$('#test')
zwraca obiekt jQuery, więc nie można'użyć po prostu object.id
, aby uzyskać jego Id
.
musisz użyć $('#test').attr('id')
, który zwraca wymagane ID
elementu
Można to również zrobić w następujący sposób ,
$('#test').get(0).id
, który jest równy document.getElementById('test').id
.