2011-06-14 22 views
27

¿Cómo puedo obtener el id del elemento que desencadenó la función jQuery .change()? La función en sí funciona correctamente, pero necesito una acción específica para un selector con id="next".

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

¿Alguna idea de por qué la alerta anterior no está funcionando?

+0

Parece que funciona para mí ... http://jsfiddle.net/interdream/nGtjR/1/ –

+0

¿Estás tratando de obtener el id del elemento seleccione el controlador de cambio está unido a? – kinakuta

Respuesta

57

this es el elemento DOM en el que se enganchó el evento. this.id es su identificación. No es necesario envolverlo en una instancia de jQuery para obtenerlo, la propiedad id refleja el atributo confiablemente en todos los navegadores.

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

Live example

Usted no está haciendo esto en su ejemplo de código, pero si estuviera viendo un recipiente con varios elementos de formulario, que le daría el ID del contenedor . Si desea que el ID del elemento que desencadenó el evento, se puede conseguir que a partir de la propiedad event object'starget:

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

Live example

(jQuery asegura que el change burbujas de eventos, incluso en IE donde doesn 'nativo.)

+1

¿Qué te hace pensar que '.id' es así de confiable? – ajax333221

+1

@ ajax333221: ¿Tiene alguna razón para pensar lo contrario? Lo he usado en IE5.5 en adelante, Chrome y Firefox desde que comenzaron, el viejo Netscape Navigator, Opera por más de una década, Safari, Konqueror, Midori, etc. Está [especificado] (http: //www.w3 .org/TR/DOM-Level-2-HTML/html.html # ID-63534901) en DOM2 HTML, y está en [versiones muy antiguas] (http://www.w3.org/TR/1999/CR- DOM-Level-2-19991210/html.html # ID-63534901) de ese documento. Diría que no encontrará un navegador en general (o incluso limitado) que no refleje elementos de identificación (id), pero me interesa la génesis de su comentario. :-) –

+0

@T Bueno, la verdad es que estaba buscando referencias sobre esto durante horas, su publicación fue la mejor que encontré, pero aún así quería una confirmación con referencias: -J – ajax333221

5

¿Quiere decir que para un elemento seleccionado con un id de "siguiente" necesita realizar algún script específico?

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