代码之家  ›  专栏  ›  技术社区  ›  Ali

如何删除jquery中的所有click事件处理程序

  •  109
  • Ali  · 技术社区  · 16 年前

    我有问题。基本上,当用户单击页面上的“编辑”链接时,将运行以下jquery代码:

    $("#saveBtn").click(function () {
        saveQuestion(id);
    });
    

    通过这样做,“保存”按钮的onclick事件将调用 saveQuestion() 方法并传递单击“编辑”链接的问题的ID。

    但如果在同一个会话中,用户单击两个问题上的“编辑”,则不会覆盖上一个问题。 click 事件处理程序,它会导致2个事件处理程序运行,其中一个可能调用 saveQuestion(1) 另一个可能会打电话 saveQuestion(2) . 通过这样做,1个问题将覆盖另一个问题。

    有没有方法删除所有以前的 点击 分配给按钮的事件?

    5 回复  |  直到 8 年前
        1
  •  190
  •   David Sherret    11 年前

    你会使用 off() 删除类似事件:

    $("#saveBtn").off("click");
    

    但这会消除 所有单击事件 绑定到此元素。如果带有savequestion的函数是唯一的事件绑定,那么上面的函数将执行此操作。如果没有,请执行以下操作:

    $("#saveBtn").off("click").click(function() { saveQuestion(id); });
    
        2
  •  13
  •   Rafael    16 年前

    是否有方法删除以前分配给按钮的所有单击事件?

    $('#saveBtn').unbind('click').click(function(){saveQuestion(id)});
    
        3
  •  7
  •   pb2q    12 年前
    $('#saveBtn').off('click').click(function(){saveQuestion(id)});
    
        4
  •  2
  •   Jarrett Meyer    16 年前

    如果你用…

    $(function(){
        function myFunc() {
            // ... do something ...
        };
        $('#saveBtn').click(myFunc);
    });
    

    …这样以后就更容易解绑了。

        5
  •  0
  •   Rohith K P    8 年前
    $('#saveBtn').off('click').on('click',function(){
       saveQuestion(id)
    });
    

    使用jQuery off on