我有一個項目表,它有一列鏈接,可以點擊打開一個浮動菜單。我還有一個側邊欄鏈接,它將執行一個ajax請求並對結果進行排序(它使用新表格重新填充表)。當表結果沒有被排序(通過ajax調用重新填充)時,鏈接工作正常。但是,當我排序結果並執行ajax請求時,表中的鏈接不再起作用。Ajax破壞.on('click',eventhandler)
我想知道如何保留錶鏈接內的點擊事件?我認爲jQuery的.on(選擇器,事件處理程序)會照顧到這一點,但在我的情況下似乎並非如此。
這是我目前對錶有鏈接點擊事件:
$('.addSet').on('click', function(event) {
event.stopPropagation();
return menuShow(this);
});
$('.addSetMenu input, .addSetMenu select, .addSetMenu').on('click', function(event) {
return event.stopPropagation();
});
menuShow = function(menuParent) {
var menu, parentLeft, parentOffset, parentTop;
menu = $(menuParent).siblings('.addSetMenu');
parentOffset = $(menuParent).offset();
parentTop = parentOffset.top;
parentLeft = parentOffset.left;
$(menu).css({
'top': parentTop + 20,
'left': parentLeft - 160
});
resetMenu();
return $(menu).toggleClass('hide');
};
$('html, .setCancelBtn').on('click', function() {
return resetMenu();
});
resetMenu = function() {
var menu;
menu = $('.addSetMenu input[type=text]');
$('.addSetMenu select').val('default');
$(menu).addClass('hide');
$(menu).val('');
return $('.addSetMenu').addClass('hide');
};
我嘗試了父母進一步回事,不被替換的DOM,但後來我的麻煩是處理鏈接對象被傳遞到menuShow(menuParent)沒有被正確地傳入。$('。addSet')。on()維護我傳入該函數的點擊鏈接,但是所有的節點在ajax調用之後被移除。 – SCS
@SCS,事件處理程序收到'event'參數。您可以在事件處理程序中使用'event.target'來獲取'.addStaff'元素引用。 – Niemand
太棒了,工作。謝謝! – SCS