/ / Firing event por duas vezes em uma tabela - jquery

Evento de acionamento por duas vezes em uma tabela - jquery

Eu estou tentando disparar o evento de clique pai sempre que uma mudança de entrada acontece. Abaixo está o meu código, ele está disparando o evento Click por duas vezes.

                  $("TABLE TBODY TR TD INPUT").change(function()
{
$(this).parents("TD").click();
});
$("TABLE TBODY TR TD").click(function()
{
alert("Clicked me...");
});

Aqui está o meu código HTML

      <table>
<tr><td>foo<input type="radio"></td><td>foo<input type="checkbox"></td></tr>
<tr><td>foo<input type="radio"></td><td>foo<input type="checkbox"></td></tr>
<tr><td>foo<input type="radio"></td><td>foo<input type="checkbox"></td></tr>
</table>

Onde está o erro ...

Respostas:

1 para resposta № 1
$("TABLE TBODY TR TD INPUT").change(function() {
clicky(this.parents("TD"));
});
$("TABLE TBODY TR TD").click(function clicky(parentElement) {
alert("Clicked me...");
});

então o input também está em td então ambos estão sendo clicados. isso só retorna um alerta, mas tenho a sensação de que você não quer alertar, mas sim alterar o elemento pai.

mas eu aposto que você provavelmente quer o seguinte

$("TABLE TBODY TR TD INPUT").change(function() {
clicky($(this).parents("TD"));
});

function clicky(parentElement) {
$(parentElement).toggleClass("clicked");

};

exemplo ao vivo: http://jsfiddle.net/nFtzJ/

aqui toda vez que a entrada muda, o pai <td> tem a classe .clicked toggled, claro que isso pode ser alterado, mas é quase um faux pas para usar alert(); em produção.


1 para resposta № 2

tente algo parecido. esta

$("TABLE TBODY TR TD INPUT").change(function() {
alert("Clicked me...");
});