Obter a identificação do elemento que disparou um evento

Existe alguma forma de obter a identificação do elemento que dispara um evento?

I' estou a pensar em algo como:

<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>

Exceto, é claro, que a var test deve conter a id "aaa", se o evento for disparado a partir do primeiro formulário, e "bbb", se o evento for disparado a partir do segundo formulário.

Solução

Em jQuery event.target refere-se sempre ao elemento que desencadeou o evento, onde event é o parâmetro passado para a função. http://api.jquery.com/category/events/event-object/

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

Note também que isso também funcionará, mas que não é um objeto jQuery, então se você deseja utilizar uma função jQuery nele, então você deve se referir a ele como $(isto), por exemplo:

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

Para referência, tente isto! Funciona!

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

Você pode utilizar (isto) para referenciar o objeto que disparou a função.

Este é um elemento DOM quando você está dentro de uma função de callback (no contexto de jQuery), por exemplo, sendo chamado pelo clique, cada um, bind, etc.

Aqui é onde você pode saber mais: http://remysharp.com/2007/04/12/jquerys-this-demystified/

Comentários (1)