3

コードに問題があります。基本的に、最初のオプションをjQueryの使用から削除したいのですが<select>、これは機能していますが、最初の選択に対してのみです。ドロップダウンが3つある場合、コードは最初のドロップダウンに対してのみ機能します。使ってみまし.eachたが、正直なところどこにあるのかわからないので助かります。これはhtmlです:

      <select class="checkb" name="gender">
     <option disabled value="">Gender</option>
     <option value="male">Male</option>
     <option value="female">Female</option>
  </select>  

  <select class="checkb" name="age">
     <option disabled value="">Age</option>
     <option value="under 13">Under 13</option>
     <option value="13-17">13-17</option>
     <option value="18-24">18-24</option>
     <option value="25-44">25-44</option>
     <option value="45-64">45-64</option>
     <option value="65+">65+</option>
  </select>  

  <select class="checkb" name="cinema">
     <option disabled value="">Select your cinema</option>
     <option value="001">Cinema 1</option>
     <option value="002">Cinema 2</option>
     <option value="003">Cinema 3</option>
  </select> 

これはjqueryです:

    $(".checkb option:first").attr('hidden','hidden');

「性別」のテキストは完全に非表示になりますが、「年齢」と「映画館の選択」は非表示になりません。

前もって感謝します。

4

2 に答える 2

5

よく:firstjqueryに最初の子(この場合はクラスの最初の要素)にのみ作用するように指示しているので、それを削除して次のようにコードを作成します。

$('.checkb').each(function () {
  $(this).children('option:first').attr('hidden','hidden');
});
于 2012-08-15T10:58:59.187 に答える
5

そのセレクターは<option>、クラスを持つ要素内にある最初の要素を選択します。そのため、最初の要素から最初の要素.checkbのみが削除<option>され<select>ます。

代わりに、:nth-child()セレクターを使用して、そのクラス<option>のの最初の子であるすべての要素を取得できます。<select>

$('.checkb option:nth-child(1)').attr('hidden', 'hidden');

編集:これを解決するための3つのアプローチ(現在の回答で提案されている2つと、クリストファー・ケニーの回答のバリエーションである3つ目)の効率に興味があったので、テストすることにしました。ここで結果を見ることができます。

于 2012-08-15T10:59:37.267 に答える