Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

263
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!