我使用jQuery .on()方法将事件处理函数附加到id为"w1"的另一个div元素内的所有div元素,但在事件处理函数内部我想在ajax调用之前分离该事件并在ajax完成后再次附加它.这是一个简单的脚本
$(document).on("click", "#w1 div", function() {
$(document).off("click","#w1 div");
$.ajax({
type: "POST",
cache: false,
url: "chtr.py",
complete: function(){
$(document).on("click","#w1 div"); // does not work
}
});
});
Run Code Online (Sandbox Code Playgroud)
我不知道如何再次将事件处理函数重新附加到这些元素.
也许你应该使用jQuery.one:
描述:将处理程序附加到元素的事件.每个元素最多执行一次处理程序.
$("#foo").one("click", function() {
alert("This will be displayed only once.");
});
Run Code Online (Sandbox Code Playgroud)
所以你的代码可能如下所示:
var ajaxHandling = function() {
$.ajax({
type: POST,
cache: false,
url: "chtr.py",
complete: function(){
$(document).one("click", "#w1 div", ajaxHandling);
}
});
}
$(document).one("click", "#w1 div", ajaxHandling);
Run Code Online (Sandbox Code Playgroud)