2011-06-14 8 views
27

Comment puis-je obtenir le id de l'élément qui a déclenché la fonction jQuery .change()? La fonction elle-même fonctionne correctement, mais j'ai besoin d'une action spécifique pour un sélecteur avec id="next".

$("select").change(function() { 
    [...snip....] 
    alert($(this).attr('id')); // <---- not working 
} 

Les idées pour lesquelles l'alerte ci-dessus ne fonctionne pas?

+0

Il ressemble à ça marche pour moi ... http://jsfiddle.net/interdream/nGtjR/1/ –

+0

Vous essayez d'obtenir l'identifiant de l'élément de sélection de votre gestionnaire de changement est attaché à? – kinakuta

Répondre

57

this est l'élément DOM sur lequel l'événement a été accroché. this.id est son identifiant. Il n'est pas nécessaire de l'insérer dans une instance jQuery pour l'obtenir, la propriété id reflète l'attribut de manière fiable sur tous les navigateurs.

$("select").change(function() {  
    alert("Changed: " + this.id); 
} 

Live example

Vous ne faites pas dans votre exemple de code, mais si vous regardiez un récipient avec plusieurs éléments de forme, qui vous donnerait l'ID du conteneur . Si vous voulez que l'ID de l'élément qui a déclenché l'événement, vous pouvez obtenir que du event object'starget propriété:

$("#container").change(function(event) { 
    alert("Field " + event.target.id + " changed"); 
}); 

Live example

(jQuery assure que les bulles d'événement change, même sur IE où il doesn 't nativement.'

+1

Qu'est-ce qui vous fait penser '.id' est-ce fiable? – ajax333221

+1

@ ajax333221: Avez-vous une raison de penser autrement? Je l'ai utilisé dans IE5.5 en avant, Chrome et Firefox depuis qu'ils ont commencé, le vieux Netscape Navigator, Opera depuis plus d'une décennie, Safari, Konqueror, Midori, etc. C'est [spécifié] (http: //www.w3 .org/TR/DOM-Level-2-HTML/html.html # ID-63534901) dans DOM2 HTML, et il est en [très premières versions] (http://www.w3.org/TR/1999/CR- DOM-Level-2-19991210/html.html # ID-63534901) de ce document. Je dirais que vous ne trouverez pas un navigateur en général (ou probablement même limité) qui ne reflète pas "id" sur les éléments - mais je suis intéressé par la genèse de votre commentaire. :-) –

+0

@T bien, la vérité est que je cherchais des références à ce sujet pendant des heures, votre poste était le meilleur que j'ai trouvé, mais je voulais quand même une confirmation avec des références: -J – ajax333221

5

Voulez-vous dire que pour un élément sélectionné avec un identifiant de "suivant" vous devez effectuer un script spécifique?

$("#next").change(function(){ 
    //enter code here 
});