Come posso ottenere l'ID di un elemento usando jQuery?

<div id="test"></div>
<script>
  $(document).ready(function() {
    alert($('#test').id);
  });  
</script>

Perché non funziona, e come dovrei fare?

Soluzione

Il modo jQuery:

$('#test').attr('id')

Nel tuo esempio:

$(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>

O attraverso il DOM:

$('#test').get(0).id;

o anche :

$('#test')[0].id;

e la ragione dietro l'uso di $('#test').get(0) in JQuery o anche $('#test')[0] è che $('#test') è un selettore JQuery e restituisce un array() di risultati non un singolo elemento per la sua funzionalità predefinita

un'alternativa per il selettore DOM in jquery è

$('#test').prop('id')

che è diverso da .attr() e $('#test').prop('foo') afferra la proprietà DOM foo specificata, mentre $('#test').attr('foo') afferra l'attributo HTML foo specificato e puoi trovare maggiori dettagli sulle differenze qui.

Commentari (20)

$('selettore').attr('id') restituirà l'id del primo elemento trovato. Riferimento.

Se il vostro insieme abbinato contiene più di un elemento, potete usare il convenzionale .each iteratore per restituire un array contenente ciascuno degli id:

var retval = []
$('selector').each(function(){
  retval.push($(this).attr('id'))
})
return retval

Oppure, se siete disposti a diventare un po' più grintosi, potete evitare il wrapper e usare il .map scorciatoia.

return $('.selector').map(function(index,dom){return dom.id})
Commentari (3)

$('#test') restituisce un oggetto jQuery, quindi non puoi usare semplicemente object.id per ottenere il suo Id.

devi usare $('#test').attr('id'), che restituisce il tuo ID richiesto dell'elemento

Questo può anche essere fatto come segue,

$('#test').get(0).id che è uguale a document.getElementById('test').id

Commentari (1)