我有以下代码使窗口卸载会话无效
window.onbeforeunload = function(event) {
if (typeof event == 'undefined') {
event = window.event;
}
if (event) {
console.log("closing the browser, invalidating the session");
$.ajax({
url : "/inValidateOnBrowserClose.html",
type : "get",
cache : false,
}).done(function(data) {
console.log(" invalidated session on browser close event");
});
}
return true;
};
$(function() {
$("a").click(function() {
window.onbeforeunload = null;
});
$("button").click(function() {
window.onbeforeunload = null;
});
});
一切正常,但我有一个页面,我有一个动态创建的按钮。
<span class="myButton"><a href="javascript:submitForm" >Update </a></span>
当我点击上面的锚点(按钮)时,我的窗口卸载事件被调用(在我的情况下它不应该被调用),我很惊讶为什么$("a").click(function())
没有被调用,我试图修复这但没有运气。谢谢你的回答
答案 0 :(得分:2)
您需要在此处使用delegate
来将点击事件绑定到动态生成的元素:
$(function() {
$(document).delegate("a","click",function() {
window.onbeforeunload = null;
});
$(document).delegate("button","click",function() {
window.onbeforeunload = null;
});
});
这适用于已有的元素,因此无需编写单独的点击绑定。
对于firefox用户delegate
功能可能无效,因此可以使用on
。请看下面的代码
$(function() {
$("a").on("click",function() {
window.onbeforeunload = null;
});
$("button").on("click",function() {
window.onbeforeunload = null;
});
});