两次调用OnClick()会导致OnClick无法正常工作

时间:2012-06-13 13:25:43

标签: javascript jquery html

我有一个单元格表,当单击一个单元格时会触发一个事件。我想动态添加单元格,所以我将在所有行上再次调用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;
    });
}

2 个答案:

答案 0 :(得分:7)

它必须是return而不是Return(大写R)

然而,写return;会返回undefined,因此您可以省略它。

编辑:

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

它与“返回”一起工作的原因是该函数只运行一次,因为它在到达时会抛出错误。

使用jQuerys .live()(或.on()用于较新版本,因为不推荐使用live)以自动将click事件附加到您添加的每个新行。 jQuery live Docs

答案 1 :(得分:1)

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

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