Re: [jquery-br] Function click executa 2 vezes

873 views
Skip to first unread message

Gihovani Demétrio

unread,
Mar 13, 2013, 4:16:04 PM3/13/13
to jque...@googlegroups.com
faltou voce por isso que está em vermelho.

$('#positions ul li p').click(function(event){
event.preventDefault();
            var it = $(this).text();
            var inputKey = $.trim($("#advertiseKeywords").val());
            
            if(inputKey == ''){
            $("#advertiseKeywords").val(it);
            }else{
            $("#advertiseKeywords").val(' ');
            $("#advertiseKeywords").val(inputKey + "," + it );
            }
            
            navItem( $(this), $.trim(inputKey) , "keywords", "keywords" );
            
        });
});


Em 13 de março de 2013 17:01, Willian Aquino <aquin...@gmail.com> escreveu:
Olá Pessoal,

Gostaria de saber porque esse código quando chamado com o evento de click carrega duas vezes.

Ele faz tudo e depois volta de novo e faz novamente. Não consigo entender isso.

Alguém poderia me ajudar?

Abraços!

$(function(){

$('#positions ul li p').click(function(){
            var it = $(this).text();
            var inputKey = $.trim($("#advertiseKeywords").val());
            
            if(inputKey == ''){
            $("#advertiseKeywords").val(it);
            }else{
            $("#advertiseKeywords").val(' ');
            $("#advertiseKeywords").val(inputKey + "," + it );
            }
            
            navItem( $(this), $.trim(inputKey) , "keywords", "keywords" );
            
        });
});

--
--
Grupo de jQuery Brasil.
 
REGRAS: https://docs.google.com/document/d/1VfvTDmeHTSj-L5ouZJjQQ4OkjTCU1Hr2XtPYBNGVHH4/edit
 
USE O JSBIN.COM / JSFIDDLE.NET PARA CÓDIGOS.
 
Email: jque...@googlegroups.com
Biba: jquery-br+...@googlegroups.com
Site: http://groups.google.com/group/jquery-br?hl=pt-BR
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery (Brasil)" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para jquery-br+...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Neto Neto

unread,
Mar 13, 2013, 4:24:11 PM3/13/13
to jque...@googlegroups.com
Essa função navItem, não está fazendo alguma recursão?

Neto - Web developer
+55 81-9916.1778


2013/3/13 Gihovani Demétrio <giho...@gmail.com>

Willian

unread,
Mar 13, 2013, 4:26:22 PM3/13/13
to jque...@googlegroups.com
Gihovani,

Cara coloquei isso anteriormente e não funcionou.

Neto,

Não ela recebe os paramentros e monta um menu.
Cara eu nunca vi uma coisa dessa, sério mesmo.

Muito estranho.

Tentei usar o bind e mesmo assim não rola, chama duas vezes.

Rafael Sirotheau

unread,
Mar 13, 2013, 4:31:58 PM3/13/13
to jquery-br
Na verdade, ao inves do .preventDefault(), tenta usar o .stopPropagation(). Talvez o elemento pai (ou outro elemento ainda mais acima), esteja fazendo essa recursão
Rafael Sirotheau
@rafasirotheau
/rafasirotheau

Front-end Web Developer
[53] 8122 5166

Willian

unread,
Mar 13, 2013, 4:37:07 PM3/13/13
to jque...@googlegroups.com
Rafael,

Também já coloquei anteriormente e não funciou.
Coloquei agora o .stopPropagation() e o preventDefault() e o mesmo erro ocorre.

Teoricamente isso não deveria acontecer porque não tem como chamar essa function e outro lugar. A única que poderia seria a navItem, mas até comentei ela e mesmo assim chama a function 2 vezes.

Vou tentar isolar esse código para ver o que acontece.


Rafael Sirotheau

unread,
Mar 13, 2013, 4:43:58 PM3/13/13
to jquery-br
da um console.log no event... e tenta ver de onde ta vindo essa segunda chamada

Juarez Junior

unread,
Mar 13, 2013, 4:51:06 PM3/13/13
to jque...@googlegroups.com

tente usar um delegate.

$('#positions').on('click','p',function(e){
e.eventPreventDefault();
var it = $(this).text()
,$ak = $("#advertiseKeywords")
,inputKey = $.trim($ak.val());
            
if(inputKey == ''){
$ak.val(it);
}else{
$ak.val(' ').val(inputKey + "," + it );
}
navItem( $(this), $.trim(inputKey) , "keywords", "keywords" );
it = $ak = inputKey = null;
    });
});


Seria interessante adicionar uma classe na tag p.

[s]



2013/3/13 Rafael Sirotheau <rsiro...@gmail.com>

Tiago Celestino

unread,
Mar 13, 2013, 4:57:50 PM3/13/13
to jque...@googlegroups.com
Usem o jsFiddle, ou jSBIN.

Giovanni Donda

unread,
Mar 13, 2013, 4:58:32 PM3/13/13
to jque...@googlegroups.com
troque

.on('click'

por .click( function(){} )

on click "anexa" o evento e tende a ficar duplicando...se olhar no firebug a cada click duplica, triplica
antigamente acontecia com o .LIVE( "click" )

testa ai e avisa...

Willian

unread,
Mar 13, 2013, 5:08:32 PM3/13/13
to jque...@googlegroups.com
Pessoal,

Coloquei um id no p.

$('p#wordKey').click(function(e) {
  console.log(e);
});


no console pessoal veio o object com todas as informações. O que procura ali?

Tem um currentTarget com o valor do p.

Mas mesmo assim chama duas vezes =(

Abraços!


Eduardo Kraus

unread,
Mar 13, 2013, 5:15:17 PM3/13/13
to jquery-br
Eu estava com este problema também. Resolveu quando peguei o mouse pelo cabo e coloquei ele em contrato com a parede em alta velocidade...

Rafael Sirotheau

unread,
Mar 13, 2013, 5:40:20 PM3/13/13
to jquery-br
tenta utilizar o on('click') mas da seguinte forma:

$('#positions ul li').on('click','p.CLASSE',function(e) {
    e.stopPropagation();
    console.log(e);
    ....

Ve como fica o log desse modo.



Willian

unread,
Mar 14, 2013, 9:18:43 AM3/14/13
to jque...@googlegroups.com
Pessoal,

Hoje chego no trabalho não faço nada só atualizei a página e tentei debugar novamente e adivinha.

Paro de passar duas vezes na function !!!!! 

Não da para acreditar nisso.

Parece bizarro mas é isso mesmo!!! 

Muito obrigado a todos pela força e dicas.

Deixei a function assim:


$('p#wordKey').click(function(e) {
e.stopPropagation();
....
)}; 


Até proxima.

Rafael Sirotheau

unread,
Mar 14, 2013, 10:08:17 AM3/14/13
to jquery-br
So tome cuidado com uso de IDs duplicadas... Vez ou outra alguem posta um problema aqui causado por isto.

Neto Neto

unread,
Mar 14, 2013, 10:29:26 AM3/14/13
to jque...@googlegroups.com
Cache miserável!

Dica: no chrome dá para desativer o cache no inspetor (mas o inspetor tem que ficar aberto)

Neto - Web developer
+55 81-9916.1778


2013/3/14 Rafael Sirotheau <rsiro...@gmail.com>
Reply all
Reply to author
Forward
0 new messages