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 内容已添加链接 id logoutLink 而无需刷新页面?
解决方案
您的问题不清楚,但如果您要动态添加链接,则应该使用 .live('click', ...)
, ,或新的 jQuery 1.7 .on()
.
其他提示
你的问题有点令人困惑,但尝试使用 live()
绑定您的事件处理程序:
$("#logoutLink").live('click', function(event) {
// ...
看 http://api.jquery.com/live/ 了解更多信息。
只有在登录系统添加链接后,才需要添加单击handler $("#logoutLink").click(function(event) {}
,因此我会执行以下操作
function addHandlers(){
$("#logoutLink").click(function(event) {
event.preventDefault();
// anything else
}
}
$(document).ready(function(){
addHandlers();
});
.
然后,当添加链路时,还要呼叫生成的addHandlers();
不隶属于 StackOverflow