JQuery preventDefault() не работает при первом щелчке

У меня есть следующий код

$("#logoutLink").click(function(event) {

 event.preventDefault();

 var dataString = "action=confirm";

 $.ajax({
 type: "POST",
 url: "requests.php",
 data: dataString,
 success: function(msg) {
 if (msg == "success") {
 alert('logged out');
 } else {
 showNotification("error", "" + msg + "");
 }
 },
 error: function() {
 showNotification("error", "Could not log you out at this time, try again.");
 }
 });

 return false;
});

и ссылка с id = "logoutLink"

the preventDefault не работает в первый раз, потому что система входа не обновляет ссылку и добавляет html-контент со ссылками, в которой находится ссылка выхода, поэтому элемент не существует в html, я знаю, что это проблема, но мой вопрос в том, как я могу узнать, что содержимое html было добавлено с идентификатором ссылки logoutLink без обновления страницы?

3 ответа

Вопрос не ясен, но вы добавляете ссылку динамически, вы должны использовать либо .live('click',...), либо новый jQuery 1.7 .on().


Ваш вопрос немного запутан, но попробуйте использовать live() для привязки обработчика событий:

$("#logoutLink").live('click', function(event) {
 // ...

См. Http://api.jquery.com/live/ для получения дополнительной информации.


вам нужно добавить обработчик кликов $("#logoutLink").click(function(event) {} только после того, как система входа добавит ссылки, поэтому я бы сделал следующее

function addHandlers(){
 $("#logoutLink").click(function(event) {
 event.preventDefault();
 // anything else
 }
}

$(document).ready(function(){
 addHandlers();
});

затем также вызовите addHandlers(); когда ссылки добавлены

licensed under cc by-sa 3.0 with attribution.