Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wwwbruno

[Resolvido] Jquery - Não repetir funções

Recommended Posts

Bom dia,

 

essa vai ser minha primeira postagem aqui no forum e agora que estou me envolvendo em alguns projetos que precisam do máximo de desempenho, pretendo postar alguns scripts, tanto para compartilhar, quanto que para que possam ser melhorados, mas chega de enrrolação, vamos ao problema!

 

 

Não vou postar o código todo aqui para simplificar e facilitar o entendimento.

 

A idéia é a seguinte, tenho alguns checkboxes e quero excluir e adicionar por ajax, o problema é que quando adiciono por ajax, esses "novos" elementos não são reconhecidos pela função que exclui, então eu carrego ela de novo e problema resolvido, parcialmente!

 


jQuery.fn.extend({
deletarCheckbox: function(local){
	$("#deletar_checkbox").click(function(){
		if(!confirm("Deseja realmente excluir?")){
			return false;
		}
		//EXCLUI POR AJAX					
	});
}
});//deletarCheckbox

jQuery.fn.extend({
adicionarCheckbox: function(local){
	$("#adicionar_checkbox").click(function(){
		if(!confirm("Deseja realmente excluir?")){
			return false;
		}
		//ADICIONA POR AJAX
		$().deletarCheckbox(); //AQUI CHAMOA FUNÇÃO NOVAMENTE PARA CARREGAR OS ELEMENTOS QUE FORAM ADICIONADOS POR AJAX				
	});
}
});//adicionarCheckbox

$().adicionarCheckbox();
$().deletarCheckbox();

 

 

O problema é o seguinte, os elementos que já existiam antes de eu adicionar os novos por ajax, rodam a funcao deletarCheckbox() duas vezes, execultando o AJAX duas vezes e pedindo a confirmação duas vezes!

 

O que eu imagino que poderia resovler é algo como limpar a função ao execultar novamente ou regarregar ela.

 

Bom mas eu confio na galera aqui do forum, e desde já, obrigado pelo apoio!

 

Atenciosamente, Bruno Almeida!

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa.. bom dia chará.

 

Veja sobre o método .live(), ele irá resolver isso para você:

http://wbruno.com.br/2011/03/18/metodo-live-jquery/

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa.. bom dia chará.

 

Veja sobre o método .live(), ele irá resolver isso para você:

http://wbruno.com.br/2011/03/18/metodo-live-jquery/

 

 

Muito obrigado, problema resolvido, só explicando pra alguma consulta futura o que usei para solver:

 

jQuery.fn.extend({
       deletarCheckbox: function(local){
               $("#deletar_checkbox").click(function(){
                       if(!confirm("Deseja realmente excluir?")){
                               return false;
                       }
                       //EXCLUI POR AJAX                                       
               });
       }
});//deletarCheckbox

jQuery.fn.extend({
       adicionarCheckbox: function(local){
               //TROQUEI O click POR live
               //$("#adicionar_checkbox").click(function(){
               $("#adicionar_checkbox").live('click', function(){
                       if(!confirm("Deseja realmente excluir?")){
                               return false;
                       }
                       //ADICIONA POR AJAX

                       //REMOVI A CHAMADA DA FUNCAO
                       //$().deletarCheckbox(); //AQUI CHAMOA FUNÇÃO NOVAMENTE PARA CARREGAR OS ELEMENTOS QUE FORAM ADICIONADOS POR AJAX                         
               });
       }
});//adicionarCheckbox

$().adicionarCheckbox();
$().deletarCheckbox();

 

Parabéns pelo seu blog chará, já adicionei aos meus favoritos e continue com o bom trabalho, abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.