我有一个单元格表,当单击一个单元格时会触发一个事件。我想动态添加单元格,所以我将在所有行上再次调用OnClick。当我第二次调用OnClick时,任何有OnClick调用两次的单元格都会停止触发任何事件。
如果我可以“返回”,那么奇怪的是我的OnClick功能。它有效,但它会抛出一个错误,说“返回”没有定义
function initBox() {
$(".selectable").on('click', function (event) {
//if its selected already, unselect it
if ($(this).hasClass('rowHighlightColor')) {
$(this).removeClass("rowHighlightColor");
selectedCellList = null;
}
else {
//unselect previous cell
if (selectedCellList != null) {
selectedCellList.removeClass("highlighted");
}
selectedCellList = $(this);
$(this).addClass("rowHighlightColor");
}
Return;
});
}
答案 0 :(得分:7)
它必须是return
而不是Return
(大写R)
然而,写return;
会返回undefined
,因此您可以省略它。
编辑:
您将事件附加两次,确保只附加一次,否则会导致(如您所见)不良行为,如附加类并立即再次删除它。
它与“返回”一起工作的原因是该函数只运行一次,因为它在到达时会抛出错误。
使用jQuerys .live()
(或.on()
用于较新版本,因为不推荐使用live)以自动将click事件附加到您添加的每个新行。 jQuery live Docs
答案 1 :(得分:1)
您正在向现有单元格添加多个事件处理程序。这就是为什么我更喜欢使用普通的旧.onclick
属性的原因之一。
无论如何,要解决此问题,您可以只将事件应用于新单元格,或者在添加事件时向其添加属性,然后在再次添加事件之前检查该属性。