我有一些部分视图,所有视图都有一些类似的类(.update,.save,.cancel),但它们的目的不同。在每个页面上,我编写了一个脚本来处理类,并使用ajax加载PartialView。
一切正常,除非我单击按钮重新加载页面,此页面中的脚本运行两次,再次单击,脚本运行3次。
$('#gridcontainer').load("/webdata/bank", {}, function () {
alert('Load page'); // alert run 1 time when page load, it normal
$('body').on('click', '.save', function () { // this function run n time when i load page n time.
var c = confirm('Do you want save?')
if (c) {
$(this).val('Edit').removeClass('save').addClass('update');
var v = $(this).closest('tr').find('td');
v.eq(1).find('span').removeClass('hide');
v.eq(1).find('input').attr('type', 'hidden');
v.eq(2).find('input.cancel').attr('type', 'hidden');
var id = $(this).data('id');
// more code
}
});
}
答案 0 :(得分:2)
重新加载时,应删除所有先前附加的事件,使用Jquery OFF
$('#gridcontainer').load("/webdata/bank", {}, function () {
alert('Load page'); // alert run 1 time when page load, it normal
$('body').off( "click", ".save").on('click', '.save', function () { // this function run n time when i load page n time.
var c = confirm('Do you want save?')
if (c) {
$(this).val('Edit').removeClass('save').addClass('update');
var v = $(this).closest('tr').find('td');
v.eq(1).find('span').removeClass('hide');
v.eq(1).find('input').attr('type', 'hidden');
v.eq(2).find('input.cancel').attr('type', 'hidden');
var id = $(this).data('id');
// more code
}
});
}