Existe alguma maneira de obter o ID do elemento que dispara um evento?
Estou pensando em algo como:
$(document).ready(function() {
$("a").click(function() {
var test = caller.id;
alert(test.val());
});
});
<script type="text/javascript" src="starterkit/jquery.js"></script>
<form class="item" id="aaa">
<input class="title"></input>
</form>
<form class="item" id="bbb">
<input class="title"></input>
</form>
Exceto, é claro, que o var test
deve conter o ID "aaa"
, se o evento for disparado a partir do primeiro formulário e "bbb"
, se o evento for acionado a partir do segundo formulário.
javascript
jquery
Joda
fonte
fonte
event.target.id
no manipulador de eventos para obter a identificação do elemento que disparou um evento.Respostas:
No jQuery
event.target
sempre se refere ao elemento que acionou o evento, ondeevent
é o parâmetro passado para a função. http://api.jquery.com/category/events/event-object/Observe também que
this
isso também funcionará, mas que não é um objeto jQuery, portanto, se você deseja usar uma função jQuery, deve se referir a ela como$(this)
, por exemplo:fonte
$(event.target)
se precisar de um método jQuery, por exemplo$(event.target).attr("organisation:thingy");
,.Para referência, tente isso! Funciona!
fonte
$(this).attr("id");
faz.e.target
você fornecerá o elemento exato que causou o disparo do evento, mesmo que fosse filho, enquantothis
o elemento ao qual o evento está anexado.Embora seja mencionado em outros posts, eu queria explicar isso:
$(event.target).id
é indefinido$(event.target)[0].id
fornece o atributo id.event.target.id
também fornece o atributo id.this.id
fornece o atributo id.e
$(this).id
está indefinido.As diferenças, é claro, são entre objetos jQuery e objetos DOM. "id" é uma propriedade DOM, portanto você precisa estar no objeto de elemento DOM para usá-lo.
(Isso me tropeçou, então provavelmente tropeçou em outra pessoa)
fonte
event.target.id
não dá nada!$(event.target).attr('selector');
funcionou perfeitamente para mim.Para todos os eventos, não se limitando apenas ao jQuery, você pode usar
Onde
event.target
falha, recai noevent.srcElement
IE. Para esclarecer o código acima, não é necessário o jQuery, mas também funciona com o jQuery.fonte
Você pode usar
(this)
para fazer referência ao objeto que disparou a função.'this'
é um elemento DOM quando você está dentro de uma função de retorno de chamada (no contexto do jQuery), por exemplo, sendo chamado pelos métodos click, each, bind, etc.Aqui é onde você pode aprender mais: http://remysharp.com/2007/04/12/jquerys-this-demystified/
fonte
$(html).click()
(este) irá retornar o objeto html e não o elemento clicadoGero uma tabela dinamicamente a partir de um banco de dados, recebo os dados em JSON e os coloco em uma tabela. Cada linha da tabela
ID
possui uma única , necessária para ações adicionais; portanto, se o DOM for alterado, você precisará de uma abordagem diferente:fonte
Elemento que disparou o evento que temos na propriedade event
Recebemos DOM nó de objeto no qual era manipulador de eventos set.
O nó mais aninhado que iniciou o processo de bolhas que temos
O objeto de evento é sempre o primeiro atributo do manipulador de eventos, exemplo:
Mais sobre delegação de eventos Você pode ler em http://maciejsikora.com/standard-events-vs-event-delegation/
fonte
O elemento de origem como um objeto jQuery deve ser obtido via
Isso fornece a fonte do clique, em vez do elemento ao qual a função de clique também foi atribuída. Pode ser útil quando o evento click está em um objeto pai EG.a evento de clique em uma linha da tabela e você precisa da célula que foi clicada
fonte
Você pode tentar usar:
fonte
isso funciona com a maioria dos tipos de elementos:
fonte
No caso de manipuladores de eventos delegados, onde você pode ter algo parecido com isto:
e seu código JS assim:
É mais provável que você encontre esse itemId
undefined
, pois o conteúdo do LI está envolvido em um<span>
, o que significa<span>
que provavelmente será o destino do evento. Você pode contornar isso com uma pequena verificação, assim:Ou, se você preferir maximizar a legibilidade (e também evitar a repetição desnecessária de chamadas de quebra automática de jQuery):
Ao usar a delegação de eventos, o
.is()
método é inestimável para verificar se o destino do seu evento (entre outras coisas) é realmente o que você precisa. Use.closest(selector)
para pesquisar na árvore do DOM e use.find(selector)
(geralmente associado a.first()
, como em.find(selector).first()
) para pesquisá-la. Você não precisa usá-lo.first()
ao usá-.closest()
lo, pois ele retorna apenas o primeiro elemento ancestral correspondente, enquanto.find()
retorna todos os descendentes correspondentes.fonte
Use can Use. No evento
fonte
Isso funciona em um
z-index
parâmetro maior que o evento mencionado nas respostas acima:Dessa forma, você sempre obterá o elemento
id
(neste exemploli
). Além disso, quando clicado em um elemento filho do pai.fonte
Trabalhando JSFiddle aqui .
fonte
Basta usar a
this
referênciaou
fonte
id
do elemento emclick()
que foi atribuído. Se você precisar transferir mais dados para esse método, precisarádata-some-id="<?php $someId; ?>"
`$ (this) .data (" some-id ") para recuperá-los.this.element.attr("id")
funciona bem no IE8.fonte
Ambos trabalham,
e
fonte
fonte
Você pode usar a função para obter o ID e o valor do item alterado (no meu exemplo, usei uma tag Select.
fonte
Estou trabalhando com
Eu tentei procurar um
event
como descrito acima, mas quando a função de solicitação é acionada, ela não parece estar disponível. Eu costumavathis.element.attr("id")
obter o ID do elemento e ele parece funcionar bem.fonte
No caso do Angular 7.x, você pode obter o elemento nativo e seu ID ou propriedades.
html:
fonte