jQuery PreventDefault() не работает при первом клике
-
10-12-2019 - |
Вопрос
У меня есть следующий код
$("#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"
PreventDefault не работает в первый раз, потому что система входа не обновляет ссылку и не добавляет html-содержимое со ссылками, в которых есть ссылка для выхода из системы, и поэтому элемент не существует в html. Я знаю, что это проблема, но мой вопрос: как мне сообщить, что html-контент был добавлен с идентификатором ссылки logoutLink без обновления страницы?
Решение
Ваш вопрос неясен, но если вы добавляете ссылку динамически, вам следует использовать либо .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();
, когда добавляются ссылки