2

私はWeb開発に非常に慣れていません。現在、tablesorter jquery プラグインを使用して、ユーザーが行を追加および削除できる動的テーブルを作成しています。クリック時に新しく作成された行の背景色を変更するのに問題があります。html でハードコードされた行で問題なく動作します。関連するコードは次のとおりです。

$(document).ready(
    function() {
        $('table.tablesorter td').click(
            function (event) {
                $(this).parent('tr').toggleClass('rowclick');
                $(this).parent('tr').siblings().removeClass('rowclick');
        });
    }
)

rowclick は CSS クラスです。

table.tablesorter tbody tr.rowclick td {
    background-color: #8dbdd8;
}

新しい行を追加するJavascript関数に次を追加しようとしました:

var createClickHandler = 
        function(newrow) {
            return function(event) {
                //alert(newrow.cells[0].childNodes[0].data);
                newrow.toggleClass('rowclick');
                newrow.siblings().removeClass('rowclick');
            };
        }
row.onclick = createClickHandler(row);

新しい行をクリックすると、アラートは行の最初の列にテキストを正しく表示します。ただし、新しい行は CSS クラスに応答しません。誰にもアイデアはありますか?

clickHandler を適用する前に、次のように tablesorter を更新したことにも言及する必要があります。

$("#TASKTABLE").trigger("update");
$("#TASKTABLE").trigger("appendCache");
4

2 に答える 2

0

td次のようなクリック可能な要素を委任します。

$('table.tablesorter').on('click','td', function(){

.on()jQuery 1.7から使用:

jQuery 1.7以降、.on()メソッドは、イベントハンドラーをアタッチするために必要なすべての機能を提供します。古いjQueryイベントメソッドからの変換については、.bind()、. delegate()、>および.live()を参照してください。.on()でバインドされたイベントを削除するには、.off()を参照してください。> 1回だけ実行されてからそれ自体を削除するイベントを添付するには、.one()を参照してください。

于 2012-06-28T21:16:45.283 に答える
0

これを試して:

$(newrow).toggleClass('rowclick');
$(newrow).siblings().removeClass('rowclick');
于 2012-06-28T21:17:46.173 に答える