1

我有一张大桌子(大约 500 行和 7 列)。我的代码只需要检查我单击的表格单元格(它将类“保留”添加到单击的单元格,该类执行一些简单的边框操作)。

它在 Firefox 和 Opera 上运行顺利,但在 Chrome 上运行很糟糕(我的意思是我必须等待大约一秒钟才能改变单元格的边框) - 你能建议我解决它的方法吗?

第一个 IF 用于其他一些检查,但它只是检查这个特定单击单元格的状态。

$("td").click( function() 
{
    if($(this).attr('system') !=  1)
    {
        if($(this).attr("reserved") != "1" && $(this).attr("reserved") != "2")
        {
            if($(this).attr("_checked")=="1")
            {
                $(this).addClass("reserved"); // here it changes border color
            }

        }
}
4

3 回答 3

1

您可以尝试缓存选择器:

$("td").click( function() 
{
    var $this = $(this);

    if($this.attr('system') !=  1)
    {
        if($this.attr("reserved") != "1" && $this.attr("reserved") != "2")
        {
            if($this.attr("_checked")=="1")
            {
                $this.addClass("reserved"); // here it changes border color
            }

        }
}
于 2013-01-21T14:12:51.543 回答
0

首先,您可以尝试像这样“压平”这种情况:

$("td").click( function() 
{
    if ($(this).attr('system') != 1 &&
        $(this).attr("reserved") != "1" &&
        $(this).attr("reserved") != "2" &&
        $(this).attr("_checked") == "1")
    {
        $(this).addClass("reserved"); // here it changes border color
    }
}

看看它是否有帮助。

于 2013-01-21T14:13:52.703 回答
0

我建议使用委托事件,因为当必须监视许多元素时,它们的开销要少得多。

$('#yourTableID').on('click', 'td', function(event) {

  .. 

});
于 2013-01-21T14:59:33.660 回答