<div id="test"></div>
<script>
$(document).ready(function() {
alert($('#test').id);
});
</script>
Prečo vyššie uvedené nefunguje a ako to mám urobiť?
Spôsob jQuery:
$('#test').attr('id')
Vo vašom príklade:
$(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>
Alebo prostredníctvom DOM:
$('#test').get(0).id;
alebo dokonca :
$('#test')[0].id;
a dôvodom použitia $('#test').get(0)
v JQuery alebo dokonca $('#test')[0]
je, že $('#test')
je selektor JQuery a vracia pole() výsledkov, nie jeden prvok podľa svojej predvolenej funkcie
alternatívou pre selektor DOM v jquery je
$('#test').prop('id')
ktorý sa líši od .attr()
a $('#test').prop('foo')
chytá zadanú DOM vlastnosť foo
, zatiaľ čo $('#test').attr('foo')
chytá zadaný HTML atribút foo
a viac informácií o rozdieloch nájdete tu.
$('selector').attr('id')
vráti id prvého zhodného prvku. Odkaz.
Ak vaša porovnávaná množina obsahuje viac ako jeden prvok, môžete použiť konvenčný .each
iterátor, ktorý vráti pole obsahujúce jednotlivé id:
var retval = []
$('selector').each(function(){
retval.push($(this).attr('id'))
})
return retval
Alebo, ak ste ochotní byť trochu drsnejší, môžete sa vyhnúť obalu a použiť .map
skratka.
return $('.selector').map(function(index,dom){return dom.id})
$('#test')
vracia jQuery objekt, takže nemôžete použiť jednoducho object.id
na získanie jeho Id
musíte použiť $('#test').attr('id')
, ktorý vráti vami požadované ID
elementu
Toto je možné vykonať aj nasledujúcim spôsobom ,
$('#test').get(0).id
, čo sa rovná document.getElementById('test').id