web-dev-qa-db-fra.com

jquery $ (this) .id return Undefined

J'ai deux boutons radio asp sur une page qui sont placés dans un updatepanel. J'ai écrit un événement de clic pour eux avec jQuery comme ceci:

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

Mais cela retourne Undefined. Quel est le problème?

EDIT:

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

Ces deux lignes renvoient null!

30
Mahdi_Nine

Une autre option (juste pour l'avoir vue):

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

HTH.

34
Tieson T.

$(this) et this ne sont pas identiques. Le premier représente un objet jQuery enroulé autour de votre élément. La seconde n'est que votre élément. La propriété id existe sur l'élément, mais pas l'objet jQuery. En tant que tel, vous avez quelques options:

  1. Accédez directement à la propriété sur l'élément:

    this.id

  2. Accédez-y depuis l'objet jQuery:

    $(this).attr("id")

  3. Tirez l'objet de jQuery:

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

  4. Obtenez le id à partir de l'objet event:

    Lorsque des événements sont déclenchés, par exemple un événement click, ils contiennent d'importantes informations et références. Dans votre code ci-dessus, vous avez un événement de clic. Cet objet d'événement fait référence à deux éléments: currentTarget et target.

    En utilisant target, vous pouvez obtenir le id de l'élément qui a déclenché l'événement. currentTarget vous dirait simplement quel élément traversait actuellement l'événement. Ce ne sont pas toujours les mêmes.

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

Parmi toutes ces solutions, la meilleure option consiste simplement à y accéder directement à partir de this lui-même, sauf si vous êtes impliqué dans une série d'événements imbriqués. Dans ce cas, il vaut peut-être mieux utiliser l'objet event. de chaque événement imbriqué (donnez-leur tous les noms uniques) pour référencer des éléments dans des portées supérieures ou inférieures.

103
Sampson

Hiya démo http://jsfiddle.net/LYTbc/

c'est une référence à l'élément DOM, vous pouvez donc l'envelopper directement.

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

La méthode .attr () obtient la valeur d'attribut uniquement pour le premier élément de l'ensemble mis en correspondance.

avoir une belle, à la vôtre!

code

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

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

    });

});

6
Tats_innit

$(this) est un objet jQuery qui enveloppe l'élément DOM this et les objets jQuery n'ont pas de propriétés id. Vous voulez probablement juste this.id pour obtenir l'attribut id de l'élément cliqué.

4
mu is too short

utiliser cette actiion

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

alert (a);
});
3
robert

this: est l’élément DOM $ (this): Jquery objct, qui est enveloppé avec Dom Element, vous pouvez également vérifier cette réponse this vs $ (this)

essayez comme ça Attr () . Obtenez la valeur d'un attribut pour le premier élément de l'ensemble des éléments correspondants.

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

    });
});
1
Ravi Gadag