2012-03-09 2 views
0

Я следующий код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; 
}); 

и связь с идентификатором = «logoutLink»

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

+1

так запутано. пожалуйста, попросите друга прочитать то, что вы попросили. Пожалуйста, перепишите вопрос. У меня есть NFI, что вы хотите –

+0

ха-ха, хорошо, вот что, у меня есть система входа в систему, в которой пользователи jquery и журналы работают без обновления страницы, при входе в систему есть div с идентификаторами, называемыми опциями, и jquery добавляет ссылки в div, используя метод .html(), поэтому исходный html, когда вы просматриваете исходный код страницы, не имеет, а затем у меня есть php, который chekcs, если пользователь вошел в систему, и рекламирует эти ссылки там (в этом случае его добавление напрямую в html без jquery). Выход из системы - одна из ссылок, и когда первый jquery регистрирует пользователей и добавляет ссылки на этот div, ссылка выхода не работает с методом .click() – Grigor

+0

, мой вопрос заключается в том, как я узнаю, что есть выход из системы, даже если страница не обновляется, а ссылки добавляются только через jquery, а не html – Grigor

ответ

2

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

+0

работал, спасибо! – Grigor

3

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

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

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

+0

работал, спасибо! – Grigor

0

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

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

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

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

+0

не совсем решение, .live() работал для меня – Grigor

Смежные вопросы