Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

266
Visualizações
Enlace jQuery haga clic en un enlace después de la llamada AJAX

Me estoy poniendo furioso, tal vez alguien pueda ayudarme con esto.

Necesito volver a vincular el clic al enlace después de la llamada AJAX, pero por alguna razón no quiere funcionar.

Aquí está mi código:

 if ($('.active').length > 0) { $('.active').click(function() { var elem = $(this); var url = $(this).attr('href'); $.ajax({ url: url, dataType: 'html', success: function(data) { elem.replaceWith(data); } }); $('.active').bind('click'); return false; }); }

¿Alguna idea?

Gracias por las respuestas. Modifiqué el código, pero el problema sigue ahí:

 function makeActive() { if ($('.active').length > 0) { $('.active').click(function() { var elem = $(this); var url = $(this).attr('href'); $.ajax({ url: url, dataType: 'html', success: function(data) { elem.replaceWith(data); } }); $('.active').live('click', makeActive); return false; }); } } $('.active').live('click', makeActive);
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

ACTUALIZACIÓN el 31 de octubre de 2012

A partir de jQuery 1.7, el enfoque recomendado es utilizar on -

 $(document).on('click', '.active', function () { // click handler code goes here });

¿Puedes probar lo siguiente?

 $('.active').live('click', function() { // click handler });
over 4 years ago · Santiago Trujillo Relatório

0

Tendría que agregar el reenlace en el controlador de success si desea ejecutarlo después de la llamada Ajax:

 success: function(data) { elem.replaceWith(data); $('.active').bind('click', /* some function needs to go here*/); }

Dicho esto, en este caso, live() o delegate() son probablemente mejores opciones [ actualización: ahora que jQuery 1.7 está disponible, todo se puede hacer con .on() ] . Esto también evitaría la doble asignación de controladores de clics, en caso de que tenga otros enlaces .active que no hayan sido reemplazados.

Actualización: con respecto a su código actualizado: la forma en que está usando live anula su propósito. Por favor, lea su documentación . Lo que está haciendo es asignar un controlador de clics cuando se hace clic en el enlace, lo que significa que está agregando controladores de clics una y otra vez.

Esta es una versión mejorada de su código.

 $('.active').live('click', function(event) { var elem = $(this); var url = $(this).attr('href'); $.ajax({ url: url, dataType: 'html', success: function(data) { elem.replaceWith(data); } }); event.preventDefault(); event.stopPropagation(); });
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda