1

部分的にフィールド(選択とテキストボックス)をリセットしようとしています。これが私がこれまでに持っているものです:

var $inputs = $('#StudentTable :select');
$inputs.each(function () { 
  if ($(this).name = "TeachingAsstSelect") { 
    $('select[name="TeachingAsstSelect"]').each(function () { 
      $(this).text(""); 
    }) 
  } 
  else { 
    $(this).val("Select");
  } 
});

ここで「TeachingAsstSelect」はクリアされていますが、他の選択はリセットされません。私は何かが足りないのですか?さらに重要なことに、私はそれを正しい方法で行っていますか?

4

2 に答える 2

1

文字列の同等性をテストしようとしている場合は、==またはを使用する必要があります===。詳細については、こちらのフォームを参照してください。JavaScriptの比較では、どの等しい演算子(== vs ===)を使用する必要がありますか?

また、@ Raminsonが示唆しているように、attr()代わりにこの方法を使用してみてください。

if ($(this).attr('name') == "TeachingAsstSelect") { 

または、さらに良いことに、そのように2回ネスト.each()すると、他のソリューションと同じように機能しない可能性があります。

ifまた、条件で名前をテストしてから、jqueryセレクターを使用してで再度照合していることにも気付きました[name="TeachingAsstSelect"]。このように単純化するのはどうですか?

var $teachingAsstInputs = $('#StudentTable :select[name="TeachingAsstSelect"]');
$($teachingAsstInputs).text(""); 

var $otherInputs = $('#StudentTable :select').not('[name="TeachingAsstSelect"]');
$($otherInputs).val("Select"); 
于 2012-07-31T17:02:24.197 に答える
1

jQuery オブジェクトの場合attr()、メソッドを使用する必要nameがあります。DOM 要素のプロパティの 1 つです。

これを変える:

  if ($(this).name = "TeachingAsstSelect") { 

に:

  if ($(this).attr('name') == "TeachingAsstSelect") { 

また、比較には演算子を使用する必要があることに注意してください ==。現在、値を設定しています。

于 2012-07-31T16:54:14.283 に答える