1

大きなテーブル (約 500 行と 7 列) があります。私のコードは、クリックしたテーブルセルをチェックするだけです(クリックしたセルに「予約済み」クラスを追加します。このクラスは簡単な境界線操作を行います)。

Firefox と Opera ではスムーズに動作しますが、Chrome ではうまくいきません (つまり、セルの境界線が変わるまで 1 秒ほど待たなければなりません)。修正方法を教えてもらえますか?

最初の 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 に答える