<div id="test"></div>
<script>
$(document).ready(function() {
alert($('#test').id);
});
</script>
Proč výše uvedené nefunguje a jak to mám udělat?
Způsob jQuery:
$('#test').attr('id')
Ve vašem příkladu:
-- začít snippet: js hide: false console: true babel: false -->
$(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>
Nebo prostřednictvím DOM:
$('#test').get(0).id;
nebo dokonce :
$('#test')[0].id;
a důvod použití $('#test').get(0)
v JQuery nebo dokonce $('#test')[0]
je ten, že $('#test')
je selektor JQuery a vrací pole() výsledků, nikoliv jeden prvek podle své výchozí funkce
alternativou pro selektor DOM v jquery je
$('#test').prop('id')
který se liší od .attr()
a $('#test').prop('foo')
chytá zadanou DOM vlastnost foo
, zatímco $('#test').attr('foo')
chytá zadaný HTML atribut foo
a další podrobnosti o rozdílech najdete zde.
$('selector').attr('id')
vrátí id prvního přiřazeného prvku. Reference.
Pokud vaše porovnávaná množina obsahuje více než jeden prvek, můžete použít konvenční .each
iterátor, který vrátí pole obsahující jednotlivá id:
var retval = []
$('selector').each(function(){
retval.push($(this).attr('id'))
})
return retval
Nebo, pokud jste ochotni být trochu drsnější, můžete se vyhnout obalu a použít .map
zkratka.
return $('.selector').map(function(index,dom){return dom.id})
$('#test')
vrací objekt jQuery, takže pro získání jeho Id
nelze použít prosté object.id
.
musíte použít $('#test').attr('id')
, který vrátí vámi požadované ID
elementu
To lze také provést následujícím způsobem ,
$('#test').get(0).id
, což se rovná document.getElementById('test').id