0

我有一个单元格表,当单击一个单元格时会触发一个事件。我想动态添加单元格,因此我将在所有行上再次调用 OnClick。当我第二次调用 OnClick 时,任何两次调用 OnClick 的单元格都会停止触发任何事件。

奇怪的是我的 OnClick 函数,如果我可以“返回”;它可以工作,但是它会抛出一个错误,说“Return”没有定义

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;
    });
}
4

2 回答 2

7

它需要return代替Return(大写R)

但是,写return;返回undefined,所以你可以省略它。

编辑:

您将事件附加两次,确保只附加一次,否则它会导致(如您所见)不良行为,例如附加类并立即再次删除它。

它与“Return”一起使用的原因是该函数只运行一次,因为它在到达它时会引发错误。

使用 jQuerys .live()(或.on()更新版本,因为 live 已被弃用)自动将点击事件附加到您添加的每个新行。jQuery 实时文档

于 2012-06-13T13:26:56.983 回答
1

您正在向现有单元格添加多个事件处理程序。这就是为什么我更喜欢只使用普通的旧.onclick属性的原因之一。

无论如何,要解决此问题,您可以仅将事件应用于新单元格,或者在添加事件时向它们添加属性,然后在再次添加事件之前检查该属性。

于 2012-06-13T13:28:30.370 回答