У меня есть страница asp.net, которая возвращает частичный вид на вкладке, в которой я сейчас выполняю свою работу. У меня есть настроенный jQuery, и он работает. Он работает один раз и через ajax возвращает частичный вид .html(result);
jQuery Частичный просмотр Ajax только один раз
Однако это работает только один раз. Я нажимаю кнопку, она делает все за кулисами, как должно, она заменяет html, как и следовало бы. Затем, когда я снова нажимаю кнопку, ничего похожего на jQuery для этих кнопок больше нет. Нет перезагрузки страницы, все это делается через ajax.
HTML, который используется, когда страница загружена первой, а HTML, возвращаемый через .html (результат), является тем же самым html-равным частичным представлением для обоих.
Является ли мой jQuery каким-то образом отключенным при возврате этого частичного представления?
Вот мой Ajax вызов:
function updateSort(object) {
jQuery.ajax({
url: "/MasterList/UpdateSort",
type: "get",
data: object, //if you need to post Model data, use this
success: function (result) {
//alert('success');
//console.log(result);
jQuery("#procedures").html(result);
}
});
}
Вот щелчок кнопки:
jQuery(".btnMoveUp").click(function() {
var $this = jQuery(this),
processID = $this.data('processid'),
currProcedureID = $this.data('procedureid'),
currSortOrder = $this.data('sortorder'),
idx = jQuery('.commentlist li').index($this.closest('li')),
$prevLi = jQuery('.commentlist li').eq(idx - 1),
$anchor = $prevLi.find('.btnContainer a'),
prevProcedureID = $anchor.data('procedureid'),
prevSortOrder = $anchor.data('sortorder');
// create object that we can pass to MVC controller
var objProcedure = {};
objProcedure = {
_processID: processID,
_currProcedureID: currProcedureID,
_currSortOrder: currSortOrder,
_switchProcedureID: prevProcedureID,
_switchSortOrder: prevSortOrder
}
updateSort(objProcedure);
});
Почему это будет работать только один раз?
Если элементы с обработчиками событий, связанных с ними в HTML, который заменяется, то да, вы потеряете эти привязки. Либо переустановите после загрузки нового html, либо используйте делегирование событий. –
Я предполагаю, что вы заменяете элементы новыми элементами, и даже если разметка точно такая же, элементов нет, а обработчики событий будут потеряны. Что вам нужно - это делегирование событий. – adeneo
@adeneo да весь div заменяется на новые результаты с частичного представления. –