返回同一页面时,Jquery停止再次绑定事件处理程序

返回同一页面时,Jquery停止再次绑定事件处理程序,jquery,asp.net-mvc,Jquery,Asp.net Mvc,SongPage视图我有以下Jquery代码: $(document).on("click", ".foo", function () { changeSong(); }); function changeSong() { $.ajax({ url: path, method: "GET", success: function (data) {

SongPage视图我有以下Jquery代码:

$(document).on("click", ".foo", function () {
    changeSong();
});

 function changeSong() {
            $.ajax({
                url: path,
                method: "GET",
                success: function (data) {
                    $('#body-wrapper').html(data);
                }
            });
 }

changeSong函数再次返回SongPage视图,因此它会再次绑定另一个click函数,我可以使用。一个函数可以确保每次只执行一次,但是有没有一种方法可以做到这一点,而无需每次创建新的click处理程序?

是的,有,您可以在调用.on之前调用.off。但我觉得这不太干净


你就不能不把脚本重新放在页面上吗?例如,像执行非ajax请求一样?

测试数据是否被追加,并阻止来自该点击事件的任何ajax调用您是否在SongPage视图中添加了这些代码?代码在我的SongPage视图中是@madalinivascu我没有追加,每次都会替换。为什么要将事件处理程序绑定到文档?如果您在SongPage HTML中包含处理程序代码,那么您知道它的结构,并且可以将处理程序绑定到body包装器。“当它被移除的时候,旧的处理程序就会被摧毁。”帕尔帕蒂姆从来没有想到过,谢谢。我会先试试,看看我能不能做到。如果没有,我就用。关。谢谢