jQuery - 处理函数内的off()和on()

Par*_*ore 0 jquery events

我使用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)

我不知道如何再次将事件处理函数重新附加到这些元素.

jan*_*mon 7

也许你应该使用jQuery.one:

http://api.jquery.com/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)