正在加载新Javascript但正在调用旧Javascript。 MVC

时间:2013-11-20 11:50:00

标签: javascript jquery model-view-controller partial-views

我有三个部分视图,JS使用JQuery来发布表单,并在发布表单时打开一个新的局部视图。

我发现的是,JS第一次启动时工作正常,但如果我在新页面上发布表单,我会调用上一页的功能。

代码:

    $('#selector').click(function (e) {
    var actionName = $(this).attr("id")
    e.preventDefault();
    e.stopImmediatePropagation();
    alert("page1 js being called")
    $('#page1Form').submit(function () {
        $.ajax({
            url: 'Dashboard/Page1/',
            data: $(this).serialize(),
            type: 'POST',
            success: function () {
                $.ajax({
                    url: 'Dashboard/LoadPartial',
                    data: { viewName: actionName },
                    type: 'GET',
                    success: function (d) {
                        $('#partial').html(d);
                    }
                });
            },
        });
    });
    $('#page1Form').submit();
});

第二个局部视图的功能与此相同,但仅限于相关的选择器等,并且出于某种原因,当浏览器中出现警告alert("page1 js being called")时,之前的页面JS被调用!

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果您正在加载部分视图,则意味着整个页面未被刷新,因此已加载的脚本仍将存在。在添加新内容之前,您需要删除与page1内容对应的事件处理程序:

$.ajax({
    url: 'Dashboard/LoadPartial',
    data: {
        viewName: actionName
    },
    type: 'GET',
    success: function (d) {
        $('#selector').off('click'); // remove the click event handler
        $('#page1Form').off('submit'); // remove the submit event handler
        $('#partial').html(d); // add your new content
    }
});