我有三个部分视图,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被调用!
提前致谢。
答案 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
}
});