1

これはばかげた質問ですが、立ち往生しています。最初の 1 つは機能するのに、他の 3 は機能しないのはなぜですか。ドキュメントを読むと、4 つすべてが機能するはずです。より大きなユースケースでフォームの要素を取得したいのですが、同じページに他のフォーム内または他のdiv内に同じ名前の他の要素が存在する可能性があるため、4番目のオプションは私が本当にやりたいことです。しかし、これらすべてが機能しない理由がわかりません。

http://jsfiddle.net/7vF5z/1/

html:

 <form id="filter_form_id" name="filter_form" method="get" action="/retrieved_data_records">

 <select id="brand_id" name="brands">
 <option value="0"></option>
 <option value="143272526">Brand1</option>
 <option selected="selected" value="269998788">Brand2</option>
 <option value="330516076">Brand3</option>
 <option value="330516077">Brand4</option>

 </select>
</form>

js:

 alert ("The val: " +  $('#brand_id').val() );    
 alert ("The val: " +  $('brands').val() );  
 alert ("The val: " +  $('#filter_form_id brands').val() );  
 alert ("The val: " +  $('#filter_form_id > brands').val() );  

4

4 に答える 4

8

これらのセレクターはどこから入手していますか?

  1. $('brands').val()(どれも) であるnodeName要素を探しています。brandsname 属性の使用を確認するには$('[name="brands"]').val()
  2. $('#filter_form_id brands')IDが(間違いなく)である要素の子孫でnodeNameある(それらのどれでもない)要素を探しています。brandsfilter_form_id
  3. $('#filter_form_id => brands')は完全に無効です。必要な子セレクターが必要な場合$('#filter_form_id > brands')

より完全なドキュメントについては、使用可能なセレクターのjQuery ドキュメントを確認してください。

于 2012-04-18T13:02:38.697 に答える
2

セレクターはbrands、要素名のように使用します。のような属性セレクターを使用する必要があります[name="brands"]

更新されたテストケース: http://jsfiddle.net/7vF5z/3/

alert ("The val: " +  $('#brand_id').val() );    
alert ("The val: " +  $('[name="brands"]').val() );  
alert ("The val: " +  $('#filter_form_id [name="brands"]').val() );  
alert ("The val: " +  $('#filter_form_id > [name="brands"]').val() );  

4番目のオプションは、私が本当に働きたいものです

それが子セレクターであると思われる場合は、次のように修正する必要があります。

  • 正しい子セレクター構文の使用
  • 私の例のように、属性セレクターを使用します。

name同じフォームに同じ値を持つ複数のコントロールを持たない限り、そこで子セレクターを使用する本当の理由はありません。

于 2012-04-18T13:01:44.953 に答える
2

のような単純な文字列ではbrands、jQuery はその名前のタグを探します。そしてbrandsタグではありません。他にできることは、$('select[name="brands"]').val()

于 2012-04-18T13:03:23.347 に答える
1
// OK
alert ("The val: " +  $('#brand_id').val() );
// there is no tag <brands />
alert ("The val: " +  $('brands').val() );  
// there is still no tag <brands />
alert ("The val: " +  $('#filter_form_id brands').val() );
// KO, doesn't mean anything
alert ("The val: " +  $('#filter_form_id => brands').val() ); 
于 2012-04-18T13:05:24.177 に答える