繁体   English   中英

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

[英]Calling OnClick() twice causes OnClick to not work

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

它需要return而不是Return (大写R)

但是,写return; 返回undefined因此您可以忽略它。

编辑:

您将事件附加两次,请确保仅将其附加一次,否则会(如您所注意到的那样)引起不良行为,例如附加类并立即将其再次删除。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM