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

$(document).ready(function() { alert($('#test').id); });

Perché questo lavoro non funziona e come dovrei farlo?

Il modo jQuery:

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

Nel tuo esempio:

 
$(document).ready(function() { alert($('#test').attr('id')); });

Oppure 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 di JQuery e restituisce un array () dei risultati non un singolo elemento con la sua funzionalità predefinita

un’alternativa per il selettore DOM in jquery è

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

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

$('selector').attr('id') restituirà l’id del primo elemento abbinato. Riferimento

Se il set abbinato contiene più di un elemento, puoi usare il tradizionale iteratore .each per restituire un array contenente ciascuno degli id:

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

Oppure, se sei disposto a diventare un po ‘più grintoso, puoi evitare il wrapper e usare la scorciatoia .map .

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

id è una proprietà di un Element html. Tuttavia, quando scrivi $("#something") , restituisce un object jQuery che racchiude gli elementi DOM corrispondenti. Per recuperare il primo elemento DOM corrispondente, chiama get(0)

 $("#test").get(0) 

Su questo elemento nativo, puoi chiamare id, o qualsiasi altra proprietà o funzione DOM nativa.

 $("#test").get(0).id 

Questo è il motivo per cui id non sta funzionando nel tuo codice.

In alternativa, usa il metodo attr di jQuery mentre altre risposte suggeriscono di ottenere l’attributo id del primo elemento corrispondente.

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

Le risposte di cui sopra sono grandiose, ma man mano che il jQuery si evolve … così puoi anche fare:

 var myId = $("#test").prop("id"); 
 $.fn.extend({ id : function() { return this.attr('id'); } }); alert( $('#element').id() ); 

Certo codice di controllo richiesto, ma facilmente implementabile!

.id non è una funzione jquery valida. È necessario utilizzare la funzione .attr() per accedere agli attributi che possiede un elemento. È ansible utilizzare .attr() per modificare un valore di attributo specificando due parametri oppure ottenere il valore specificandone uno.

http://api.jquery.com/attr/

Se vuoi ottenere un ID di un elemento, diciamo da un selettore di class, quando un evento (in questo caso l’evento click) è stato triggersto su quell’elemento specifico, allora il seguente farà il lavoro:

  $('.your-selector').click(function(){ var id = $(this).attr('id'); }); 

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

è necessario utilizzare $('#test').attr('id') , che restituisce l’ ID richiesto dell’elemento

Questo può anche essere fatto come segue,

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

Forse utile per gli altri che trovano questo thread. Il codice qui sotto funzionerà solo se usi già jQuery. La funzione restituisce sempre un identificatore. Se l’elemento non ha un identificatore, la funzione genera l’identificatore e lo aggiunge all’elemento.

 var generatedIdCounter = 0; $.fn.id = function() { var identifier = this.attr('id'); if(!identifier) { generatedIdCounter++; identifier = 'isGenerated_' + generatedIdCounter; this.attr('id', identifier); } return identifier; } 

Come usare:

 $('.classname').id(); $('#elementId').id(); 

Bene, sembra che non ci sia stata una soluzione e vorrei proporre la mia soluzione che è un’espansione del prototipo di JQuery. Lo metto in un file di window.jQuery che viene caricato dopo la libreria JQuery, quindi il controllo di window.jQuery

 if (window.jQuery) { $.prototype.id = function () { if (this.length > 1) { var val = []; this.each(function (idx, el) { val.push($(el).id()); }); return val; } else { return this.attr('id'); } } } 

Potrebbe non essere perfetto ma è un inizio per ottenere forse l’inclusione nella libreria JQuery.

Restituisce un singolo valore di stringa o una matrice di valori stringa. La matrice di valori stringa, è per l’evento che è stato utilizzato un selettore a più elementi.

$('#test').attr('id') Nel tuo esempio:

 
$(document).ready(function() { alert($('#test').attr('id')); });
 $('tagname').attr('id'); 

Usando il codice sopra puoi ottenere l’id.

Questa è una vecchia domanda, ma a partire dal 2015 potrebbe effettivamente funzionare:

 $('#test').id; 

E puoi anche fare assegnazioni:

 $('#test').id = "abc"; 

Finché si definisce il seguente plug-in JQuery:

 Object.defineProperty($.fn, 'id', { get: function () { return this.attr("id"); }, set: function (newValue) { this.attr("id", newValue); } }); 

È interessante notare che se l’ element è un elemento DOM, allora:

 element.id === $(element).id; // Is true! 

Importante: se stai creando un nuovo object con jQuery e leghi un evento, DEVI usare prop e non attr , come questo:

$("

",{ id: "yourId", class: "yourClass", html: "" }).on("click", function(e) { alert($(this).prop("id")); }).appendTo("#something");

Questo può essere id elemento, class, o automaticamente utilizzando anche

 ------------------------ $(this).attr('id'); ========================= ------------------------ $("a.remove[data-id='2']").attr('id'); ========================= ------------------------ $("#abc1'").attr('id'); ========================= 

Questo alla fine risolverà i tuoi problemi:

diciamo che hai molti pulsanti su una pagina e vuoi cambiarne uno con jQuery Ajax (o non ajax) a seconda del loro ID.

diciamo anche che hai molti tipi diversi di pulsanti (per i moduli, per l’approvazione e per scopi simili) e vuoi che jQuery tratti solo i pulsanti “mi piace”.

ecco un codice che funziona: il jQuery tratterà solo i pulsanti di class .cls-hlpb, prenderà l’id del pulsante che è stato cliccato e lo cambierà in base ai dati che provengono da Ajax.

 < !DOCTYPE html>         

il codice è stato preso da w3schools e cambiato.

Poiché id è un attributo, puoi ottenerlo usando il metodo attr .