jQuery .on не распознает URL-адреса из jQuery $ .post - PullRequest
0 голосов
/ 16 января 2012

Мой скрипт ниже генерирует URL, если в ответе $ .post () есть ошибка. Я пытаюсь использовать .on (), чтобы я мог прикрепить функцию к сгенерированному URL, но он не работает. Когда я добавляю URL в DOM (без $ .post), он работает как шарм, он просто не хочет работать, если URL генерируется в $ .post (). Какие-нибудь идеи или решение о том, как я могу заставить это работать?

// 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;
});

Ответы [ 2 ]

2 голосов
/ 16 января 2012

$('.test') в вашем коде ищет все элементы с классом «test» в вашем DOM и добавляет к ним прослушиватель щелчков.Это повлияет только на элементы, которые можно найти при выполнении вызова .on (т. Е. , а не , когда происходит фактический щелчок).

Если вы добавляете элементы с тестомclass после вызова .on, вам нужно будет позвонить .on для элемента, который будет родителем всех ваших .test элементов, и который никогда не будет уничтожен:

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

Для оптимальной производительности выберите ближайшего возможного родителя, чтобы меньшая часть DOM искала подходящие элементы.Использование document здесь не обязательно идеально, но это самое близкое, что я могу предположить, не зная вашего DOM.

0 голосов
/ 16 января 2012

Возможно, вы хотите что-то вроде:


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

...