0

したがって、2つのオブジェクトがあります。

  1. 行と列の数を含むテーブル。これらの列の1つは「ビルダー」と呼ばれます
  2. テーブルにある可能性のあるすべての「ビルダー」を含むドロップダウン

ドロップダウンで「BuilderX」を選択すると、「Builder X」を含むすべての行が強調表示されるように、条件付きCSSを使用します。

私の最初の計画は、各行にそのビルダーに基づいて動的にクラスを与え(これは私が行った)、ドロップダウンでオプションを変更したときにCSSを変更することでした(これは適切に行う方法がわかりません)。

これが私がいる状況を示す(境界線が役に立たない)フィドルです:http://jsfiddle.net/convoke/bTM6D/8/

逆に、これを行うためのより賢明でより良い方法があれば、私はそれを聞いてオープンです。

4

3 に答える 3

4

通常、これを行うにはjQuery JavaScript フレームワークを使用します。

$(document).ready(function(){

    $('#idOfDropDown').change(function(){

        // Remove existing active classes from the table
        $('#idOfTable tr').removeClass('active');

        // Add the new active class to the appropriate builders
        var builder = $(this).val();
        $('#idOfTable tr.' + builder).addClass('active');

    });

});

上記のコードが行うことは、ビルダーのドロップダウン リストからオプションを選択すると、選択したオプションの値フィールドを取得し、ページ上でそのクラスを持つすべての要素を検索し、それらの要素に「アクティブな」クラスを追加することです。 CSS を使用して強調表示できます。

これは、ドロップダウン リスト内の各ビルダーの値が、テーブル内のビルダーのクラス名と同じであることに依存しています。

于 2012-05-04T15:35:46.670 に答える
1

各行で data- 属性を使用して、そのビルダーを示すことができます。

<tr data-builder="x"> ... </tr>

次に、ドロップダウン変更イベントで次のことを行うことができます

$("#my_table").
    find("tr").removeClass("highlighted").
    find("tr[data-builder='" + selectedBuilder + "']").addClass("highlighted")
于 2012-05-04T15:36:51.727 に答える
1

この jsFiddle を試してみてください。

http://jsfiddle.net/Bchgu/

于 2012-05-04T15:42:43.657 に答える