3

最初の投稿で、jQueryは初めてです。一生懸命に見えましたが、完全に関連する投稿は見つかりませんでした。

テーブルに行の色を交互に配置します。1つのクラスがNULL/空の1つのクラス=alt。jQueryスクリプトは、クリックすると行を強調表示するように部分的に機能します。

質問は次のとおりです。removeClassをどのように使用してから、onChangeイベントで削除された特定のクラスを復元​​(addClass / toggleClass)しますか?助けていただければ幸いです。Tks。(以下のフィドルを参照)

HTML

    <table id="fooBar" border="0">
    <tr>
        <th>Text</th>
        <th>Text</th>
        <th>Text</th>
        <th></th>
        <th></th>
    </tr>
    <tr class="">
        <td>Text</td>
        <td></td>
        <td></td>
        <td></td>
        <td>image</td>
        <td>image</td>
    </tr>
    <tr class="alt">
        <td>Text</td>
        <td></td>
        <td></td>
        <td></td>
        <td>image</td>
        <td>image</td>
    </tr>
    <tr class="">
        <td>Text</td>
        <td></td>
        <td></td>
        <td></td>
        <td>image</td>
        <td>image</td>
    </tr>
    <tr class="alt">
        <td>Text</td>
        <td></td>
        <td></td>
        <td></td>
        <td>image</td>
        <td>image</td>
    </tr>
</table>

CSS

table {
    width:100%;
    border-collapse:collapse;
    table-layout:auto;
    vertical-align:top;
    margin-bottom:15px;
    border:1px solid #999999;
}

th {
    font: bold 11px"Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
    color: #F2EDEB;
    border-right: 1px solid #C1DAD7;
    border-bottom: 1px solid #C1DAD7;
    border-top: 1px solid #C1DAD7;
    letter-spacing: 2px;
    text-transform: uppercase;
    text-align: left;
    padding: 6px 6px 6px 12px;
    background: #522D25 url(images/bg_header.jpg) no-repeat;
}

tr {
    background: #fff;
    color: #261F1D;
}

tr:hover, tr.alt:hover {
    color: #261F1D;
    background-color: #E5C37E;
}

.highlighted {
    color: #261F1D;
    background-color: #E5C37E;
}

tr.alt {
    background: #F5FAFA;
    color: #B4AA9D;
}

td {
    border-right: 1px solid #C1DAD7;
    border-bottom: 1px solid #C1DAD7;
    padding: 6px 6px 6px 12px;
}

jQuery

$(document).ready(function () {
    $("tr").click(function () {
        $(this).closest("tr").siblings().removeClass("highlighted");
        $(this).toggleClass("highlighted");
    })
});
// Note: currently only works for row without '.alt' css class assigned (ie. empty)
// question is how to replace a class and then RESTORE the class onChange

これがjsFiddleです:http://jsfiddle.net/codeChaos1988/kh4VY/1/

また、javascript/jQueryでのプログラミングを実際に学ぶための最良のチュートリアルサイトへのポインタもありがたいです。

よろしくお願いします。

4

2 に答える 2

11

元のクラスの削除/復元について心配する必要がないように、cssを次のように変更してみてください。

.highlighted {
    color: #261F1D !important;
    background-color: #E5C37E !important;
}

JSの場合:

$('table').on('click', 'tr', function () {
    var state = $(this).hasClass('highlighted');
    $('.highlighted').removeClass('highlighted');
    if ( ! state) { $(this).addClass('highlighted'); }
});
于 2013-03-03T23:30:38.517 に答える
-1

データテーブルの初期化セクションにこれを追加しました:

"createdRow": function( row, data, index ) {
            if (tableInitialized){
                flashRow( row );
            }

これはうまくいきました!

于 2016-04-11T16:43:38.640 に答える