1097 votes

L'obtention de l'ID de l'élément qui a déclenché un événement à l'aide de jQuery

Est-il possible d'obtenir l'ID de l'élément qui déclenche un événement?

Je suis en train de penser à quelque chose comme:

<html>

  <head>
    <script type="text/javascript" src="starterkit/jquery.js"></script>
    <script type="text/javascript">
      $(document).ready(function () {
        $("a").click(

        function () {
          var test = caller.id;
          alert(test.val());
        });
      });
    </script>
  </head>

  <body>
    <form class="item" id="aaa">
      <input class="title"></input>
    </form>
    <form class="item" id="bbb">
      <input class="title"></input>
    </form>
  </body>

</html>

Sauf, bien sûr, que le var test doit contenir l'id "aaa", si l'événement est déclenché à partir de la première forme, et "bbb", si l'événement est déclenché à partir de la seconde forme.

1411voto

samjudson Points 27483

En jQuery event.target toujours fait référence à l'élément qui a déclenché l'événement, où l' 'event' est le paramètre passé à la fonction. http://api.jquery.com/category/events/event-object/

$(document).ready(function() {
    $("a").click(function(event) {
        alert(event.target.id);
    });
});

Notez également qu' 'this' , mais que ce n'est pas un objet jQuery, donc si vous souhaitez utiliser la fonction jQuery sur elle, alors vous devez vous référer à elle comme '$(this)', par ex.:

$(document).ready(function() {
    $("a").click(function(event) {
        // this.append wouldn't work
        $(this).append(" Clicked");
    });
});

186voto

Gemma Points 521

Pour référence, essayez cette! Il fonctionne!

jQuery("classNameofDiv").click(function() {
    var contentPanelId = jQuery(this).attr("id");
    alert(contentPanelId);
});

114voto

dsch Points 281

Bien qu'il est mentionné dans d'autres commentaires, je voulais sort ceci:

$(event.target).id n'est pas défini

$(event.target)[0].id donne l'attribut id.

event.target.id donne également l'attribut id.

this.id donne l'attribut id.

et

$(this).id n'est pas défini.

Les différences, bien sûr, est entre jQuery objets et les objets DOM. "id" est une fonction DOM sorte que vous devez être sur l'élément DOM objet pour l'utiliser.

(Il a trébuché moi, il est donc probablement trébucher quelqu'un d'autre)

108voto

Ally Points 969

Pour tous les événements, non seulement vous pouvez utiliser jQuery

var target = event.target || event.srcElement;
var id = target.id

Où l'événement.la cible échoue, il revient sur l'événement.srcElement pour ie. Afin de clarifier le code ci-dessus ne nécessite pas de jQuery, mais fonctionne aussi avec jQuery.

59voto

Espo Points 24318

Vous pouvez utiliser (this) à la référence de l'objet qui a déclenché la fonction.

'this' est un DOM élément lorsque vous êtes à l'intérieur d'une fonction de rappel (dans le contexte de jQuery), par exemple, d'être appelé par le clic, chaque, lier, etc. des méthodes.

C'est ici que vous pouvez en apprendre plus: http://remysharp.com/2007/04/12/jquerys-this-demystified/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X