Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

225
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda