2012-05-14 17 views
22

Tengo dos botones de radio asp en una página que se ubican en updatepanel. Escribí un evento de clic para ellos con jQuery como este:

$(document).ready(function() { 
    $(".inputs").click(function() { 
     alert($(this).id); 
    }); 
}); 

Pero devuelve Indefinido. ¿Cuál es el problema?

EDIT: 

     alert(" or " + $(this).attr("id")); 
alert(this.id); 

Estas dos líneas de retorno null!

+1

Siempre utilizar console.log(); Sería mucho más fácil. En su ejemplo, puede usar: console.log (this); Y es mostrar todos los datos (id, className, etc ...) – Min2liz

Respuesta

25

Otra opción (para que lo has visto):

$(function() { 
    $(".inputs").click(function (e) { 
     alert(e.target.id); 
    }); 
}); 

HTH.

4

$(this) es un objeto jQuery que está envolviendo el elemento DOM this y los objetos jQuery no tienen propiedades id. Probablemente desee solo this.id para obtener el atributo id del elemento cliqueado.

6

Hiya demostraciónhttp://jsfiddle.net/LYTbc/

Ésta es una referencia al elemento DOM, por lo que se puede envolver directamente.

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

El método .attr() obtiene el valor de atributo para sólo el primer elemento en el conjunto combinado.

tenga una buena, ¡salud!

código

$(document).ready(function() { 
    $(".inputs").click(function() { 
     alert(this.id); 

     alert(" or " + $(this).attr("id")); 

    }); 

});

1

esto: es el elemento DOM $ (este): objct Jquery, que concluyó con Dom elemento, se puede comprobar esta respuesta también this vs $(this)

prueba así Attr(). Obtenga el valor de un atributo para el primer elemento en el conjunto de elementos coincidentes.

$(document).ready(function() { 
    $(".inputs").click(function() { 
     alert(" or " + $(this).attr("id")); 

    }); 
}); 
87

$(this) y this no son lo mismo. El primero representa un objeto jQuery envuelto alrededor de su elemento. El segundo es solo tu elemento. La propiedad id existe en el elemento, pero no en el objeto jQuery.Como tal, usted tiene algunas opciones:

  1. acceder a la propiedad en el elemento directamente:

    this.id

  2. acceder a él desde el objeto jQuery:

    $(this).attr("id")

  3. Extraiga el objeto de jQuery:

    $(this).get(0).id; // Or $(this)[0].id

  4. Consigue el id del objeto event:

    Cuando se levantan los eventos, por ejemplo, un evento de clic, que llevan información y referencias importantes con ellos. En su código anterior, tiene un evento de clic. Este objeto de evento tiene una referencia a dos elementos: currentTarget y target.

    Usando target, puede obtener el id del elemento que provocó el evento. currentTarget simplemente le diría a qué elemento está pasando el evento actualmente. Estos no son siempre lo mismo.

    $("#button").on("click", function(e){ console.log(e.target.id) });

De todas ellas, la mejor opción es simplemente acceder a ella directamente desde this sí mismo, a menos que usted está involucrado en una serie de eventos anidados, entonces podría ser mejor usar el event objeto de cada evento anidado (proporcióneles todos los nombres únicos) a los elementos de referencia en ámbitos superiores o inferiores.

+6

Obviamente una pregunta bastante popular que este fue el resultado de búsqueda número uno cuando busqué en Google "$ (this) .id en jquery". Y tu respuesta fue correcta y me ayudó. Fui con el método .attr() y funcionó a las mil maravillas. ¡Gracias! – hardba11

+3

¿Por qué no es esta la respuesta correcta? – Pier

+0

@Pier de hecho esta es la mejor respuesta, pero no la única que es correcta. – yeyo

2

uso esta actiion

$(document).ready(function() { 
var a = this.id; 

alert (a); 
});