1

ページにいくつかのテーブルがあり、各テーブルに複数のドロップダウンがある可能性があります。テーブルとドロップダウンは自動生成されます。ターゲットにしたいテーブルには数値 ID があり、ドロップダウンのすべての値は数値になります。

ターゲットにしたいテーブルの 1 つの HTML サンプル コード

<table id="15">
 <tr>
  <td>
   <div id="dd_4_0">
    <select id="4_0">
     <option value=""></option>
     <option value="18">VNDR64324</option>
     <option value="21">MFG5321</option>
     <option value="27">OTHER</option>
    </select>
   </div>
  </td>
 </tr>
 <tr>
  <td>
   <div id="dd_2_6">
    <select id="2_6">
     <option value=""></option>
     <option value="12">VN32R2345</option>
     <option value="21">5678</option>
     <option value="27">NEM</option>
    </select>
   </div>
  </td>
</tr>
</table>

テーブル内のドロップダウンの 1 つが選択されたら、他のドロップダウンを非表示にしたいと思います。機能するコードがありますが、可能であればループを繰り返し処理する必要はありません。これを書くためのよりクリーンな方法はありますか?

$('table').click(function() {
    if($.isNumeric(this.id))
        dd = $("#" + this.id + " select");
        $.each(dd, function(){
            if($.isNumeric($(this).val()))
            {
                selectedId = this.id;
                $.each(dd, function(){
                    if(this.id != selectedId)
                        $('#dd_' + this.id).hide();
                });

            }
        });
});
4

2 に答える 2

0

関連するテーブルに共通のクラスを追加してから、次のようにします。

$(".table_class select").change(function(){
    var $this = $(this);

    if($this.val() != ""){
        $this.closest(".table_class").find("select").not($this).hide();
    } else {
        // if you want, re-show them if the select is de-selected
        $this.closest(".table_class").find("select").show();
    }
});
于 2013-05-10T19:39:05.470 に答える
0

テーブル内のドロップダウンの 1 つが選択されたら、他のドロップダウンを非表示にしたいと思います。

私があなたを手に入れたかどうかはわかりませんが、最短の方法(私が考えることができる..)はのchange()イベントを呼び出すことです.select

これを試して

$('select').change(function(){
   $(this).parents('tr').find('select').not($(this)).hide(); 
});

ただし、これはドキュメントに存在するすべての選択要素を選択します...テーブルの外またはページの他の場所に他の選択要素がないことが確実な場合...これは機能するはずです...そうでなければ、にクラスを追加できます各テーブルとそのテーブルの呼び出しセレクタのみを選択します...

ここで働くフィドル

于 2013-05-10T19:39:53.630 に答える