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