1

選択ボックスの変更時に実行される次のコードがあります。

 $('#reg-phone-type').change( function() {
      console.dir($(this));
      console.log("$(this).val():" + $(this).val());
    if( $(this).val == 'work' ) {
      // do one thing
    } else {
      // do something else
    }
  });

印刷するconsole.dir($(this));と、選択したオプションが(私のスクリーンショットの例では)「機能する」に設定されていることがわかります(ラベルは適切なケースですが、実際のオプション値は低いため、ケースの問題を扱っていないことがわかります)。

ここに画像の説明を入力

選択ボックスが変更された後の Firebug の HTML は次のとおりです (デフォルトは「home」です)。

ここに画像の説明を入力

<select name="regPhoneType" id="reg-phone-type" style="display: none;" value="work">
    <option value="home">Home</option>
    <option value="work" selected="selected">Work</option>
    <option value="cell">Cell</option>
</select>

したがって、オプションが正しく選択されていることがわかります。では、なぜ、jquery で 1 行だけ後に を呼び出したときにconsole.log("$(this).val():" + $(this).val());、「仕事」ではなく「家」を取得するのでしょうか。私の理解では.val()、選択ボックスの選択されたオプションの値を返すので、「仕事」を得る必要があります。

ここに画像の説明を入力

4

1 に答える 1

3

試す:

$('#reg-phone-type option:selected').val(); 

また

$('option:selected',this).val(); 
于 2013-01-09T17:47:06.127 に答える