У меня есть 3 частичных представления с 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();
});
Второй частичный вид имеет такую же функцию, но только с соответствующими селекторами и т.д., И по какой-то причине предыдущие страницы JS вызывается как alert("page1 js being called")
появляется в браузере!
Заранее спасибо.
Если вы загружаете частичные представления, это означает, что вся страница не обновляется, и в результате уже загруженные сценарии все еще будут там. Вам необходимо удалить обработчики событий, соответствующие содержимому 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
}
});