Javascript 如何删除所有jQuery事件(或者干脆不重新初始化两次)

Javascript 如何删除所有jQuery事件(或者干脆不重新初始化两次),javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在使用AJAX构建一个网页。它可以设置一个div、一些按钮和添加click事件。其中一个按钮简单地退出这个“屏幕”,并将用户带回他们的来源地。那么,用户可以再次重建这个相同的div,并重新设置相同的click事件 每次发生这种情况时,单击事件比以前多注册一次。因此,我似乎是通过一遍又一遍地重新初始化同一代码来创建多个单击事件 下面是多次设置的代码的编辑版本(如果用户选择以这种方式导航) 现在我尝试使用exit函数中的.unbind()和.off()方法来关闭所有注册的事件,但这似乎不起作用。

我正在使用AJAX构建一个网页。它可以设置一个div、一些按钮和添加click事件。其中一个按钮简单地退出这个“屏幕”,并将用户带回他们的来源地。那么,用户可以再次重建这个相同的div,并重新设置相同的click事件

每次发生这种情况时,单击事件比以前多注册一次。因此,我似乎是通过一遍又一遍地重新初始化同一代码来创建多个单击事件

下面是多次设置的代码的编辑版本(如果用户选择以这种方式导航)

现在我尝试使用exit
函数
中的
.unbind()
.off()
方法来关闭所有注册的事件,但这似乎不起作用。有办法解决这个问题吗?
}

JQuery具有.detach方法,该方法将保留稍后添加的DOM元素的事件。它的使用方式与.remove方法相同。

如果绑定到这两个事件的元素没有被替换,则不需要每次都重新绑定它们

$(document).ready(function(){
    $("#viewer_go_back").click(function () {
        InitClassViewer();
        ...
    });

    // ==================
    // Init. NEXT Button
    // ==================
    $("#viewer_next_page").click(function () {...});
});

function StartClassViewer(class_id) {...}

将事件处理程序放在其他地方,它们只初始化一次,并使用委派的事件处理程序。请参阅,但这不会起作用,因为我正在创建实际元素之前设置处理程序?显然,$.post没有创建这两个元素,否则您将不会得到重复的事件。您完全正确。有一段时间是这样的,但当你说我把它移到了外面(在
帖子之前)。我会将其标记为正确。然后这个概念仍然适用,只需将
$(document).ready(function(){…})
替换为创建这两个元素的内容即可。
$(document).ready(function(){
    $("#viewer_go_back").click(function () {
        InitClassViewer();
        ...
    });

    // ==================
    // Init. NEXT Button
    // ==================
    $("#viewer_next_page").click(function () {...});
});

function StartClassViewer(class_id) {...}