Pregunta

Mi siguiente script genera una URL si la respuesta $ .post () tiene un error.Estoy tratando de usar .on () para poder adjuntar una función a la URL generada, pero no funciona.Cuando agrego la URL en el DOM (sin $ .post), funciona como un encanto, simplemente no quiere funcionar si la URL se genera dentro de $ .post ().¿Alguna idea o solución sobre cómo puedo hacer que funcione?

// Do the database check:
$.post("test.php",{searchFor : search},function(data) {
       if(data.response == true) {
           // DO SOME STUFF
       } else if(data.response == false && data.error == "noDoc") {
           $("#resultsTable").html("<tr><td colspan='6'><p><strong>No user found, <a href='#' class='addDoctor'>Click here</a> to add a doctor.</strong></p></tr>");
       } else {
           $("#resultsTable").html("<tr><td colspan='6'><p><strong>"+data.error+"</strong></p></tr>");
       }
   });
});

$(".addDoctor").on("click",function() {
   alert("test");
    return false;
});
¿Fue útil?

Solución

$('.test') en su código, busca todos los elementos con una clase llamada "prueba" en su DOM y les agrega un detector de clics.Esto solo afectará a los elementos que se pueden encontrar cuando se ejecuta la llamada a .on (es decir, no cuando ocurre el clic real).

Si está agregando elementos con la clase de prueba después de la llamada a .on, necesitará llamar a .on para un elemento que será el padre de todos sus elementos .test, y que nunca serádestruido:

$(document).on('click', '.test', function() {
    alert('test');
});

Para un rendimiento óptimo, seleccione el padre más cercano posible, de modo que una parte más pequeña del DOM tenga que buscarse elementos elegibles.El uso de document aquí no es necesariamente ideal, pero es lo más cercano que puedo asumir, sin conocer su DOM.

Otros consejos

Es posible que desee algo como:


$(".addDoctor").on("click", function(event){
    alert("test");
});

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top