0
我遇到了讓這段代碼工作的問題。它的構建允許用戶點擊一行以通過不同類別的突出顯示來「選擇」它。如果另一行被點擊,那個被突出顯示,並且當前的一個被清除。如果一個已經被突出顯示的被再次點擊,它將被清除回正常狀態。代理和AddClass不起作用
這是在刷新頁面的ajax調用中,所以每次調用完成並插入表格的html,然後調用下面的這個函數。出於某種原因,每隔一次重新加載表格,這個工作。我跟蹤了該函數結束時不能運行的$(this).addClass(selectedUserClass)行。我放在那裏的調試控制檯日誌和正確的類一起工作,但下一部分由於某種原因不會添加類。
在螢火蟲中,線條由..變爲,但不變?我一直在看這個小時,我無法弄清楚。謝謝你的幫助!
function loadUserListener(style) {
if (style == "normal") {
selectedUserClass = 'selectedUser';
selectedJQueryClass = '.selectedUser';
} else {
selectedUserClass = 'selectedUserInverted';
selectedJQueryClass = '.selectedUserInverted';
}
console.log('setting');
$("#selectuser").delegate("tr", "click", function() {
if ($(this).hasClass(selectedUserClass)) {
$(selectedJQueryClass).removeClass(selectedUserClass);
} else if ($(selectedJQueryClass)[0]) {
console.log('another');
$(selectedJQueryClass).removeClass(selectedUserClass);
$(this).addClass(selectedUserClass);
} else {
console.log(selectedUserClass);
$(this).addClass(selectedUserClass);
}
});
}
該代碼不會有所意味着你將與ID'#selectuser'多個元素,和相同的委託事件處理多次,也設置。將ID更改爲類,並將委派的事件處理程序移到ajax函數之外。 – adeneo
要清楚,每次調用ajax時,都會用新的表體替換舊的表體,因此不會有多個具有相同id的事物,但我將其更改爲一個類,但它不起作用。我把事件處理程序移到了外面,但它仍然不起作用。 – phouse512
問題明確地說,你在每個ajax調用中調用該函數,這就是爲什麼它每隔一段時間都會工作,因爲每次添加和刪除類時都會刪除完全相同的事件處理程序,甚至會添加偶數次。現在你只需要弄清楚如何解決這個問題,並且看看**委託的**版本的on()將是一個好的開始。 – adeneo