Pergunta

Meu script abaixo gera um url se a resposta $ .post () tiver um erro.Estou tentando usar .on () para poder anexar uma função ao URL gerado, mas não funciona.Quando eu adiciono o URL no DOM (sem o $ .post), funciona perfeitamente, só não quer funcionar se o url for gerado dentro de $ .post ().Alguma ideia ou solução sobre como posso fazer isso funcionar?

// 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;
});
Foi útil?

Solução

$('.test') em seu código, pesquisa todos os elementos com uma classe chamada "teste" em seu DOM e adiciona um ouvinte de clique a eles.Isso afetará apenas os elementos que podem ser encontrados quando a chamada para .on está sendo executada (ou seja, não quando o clique real acontece).

Se você estiver adicionando elementos com a classe de teste após a chamada para .on, você precisará chamar .on para um elemento que será o pai de todos os seus elementos .test, e que nunca serádestruído:

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

Para obter o desempenho ideal, selecione o pai mais próximo possível, de modo que uma parte menor do DOM tenha que ser pesquisada em busca de elementos elegíveis.O uso de document aqui não é necessariamente ideal, mas é o mais próximo que posso supor, sem saber seu DOM.

Outras dicas

Você pode querer algo como:


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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top