2011-12-21 15 views
3
$("input[type=radio]").change(function(){ 
    alert(this.val()); 
}); 

これはなぜ機能しませんか? 私は、ラジオボタンが選択されるたびにページがその値を警告することを望んでいます。Jquery val()が機能しません。

+0

間違いはありますか?これが実行されると、DOMは準備ができていますか? HTMLを使ってページ全体を見る必要があります。 –

答えて

10

私はあなたがこれを行うために必要と考えている:@Eonasdanは、すでに述べたように

$("input[type=radio]").change(function(){ 
    alert($(this).val()); 
}); 
5

、あなたが$(this).val()を使用する必要があります。

この理由は、thisがプレーンDOM要素を指し、.val()がjQueryオブジェクトを必要とするためです。

ところで、あなた属性セレクタに属性値を引用符で囲む必要があります。$("input[type='radio']")

+0

+1は '属性='値 'セレクタを引用する必要があります。 –

+0

ドキュメントでは「必須」と表示されていますが、引用符の必要条件はスペースが含まれている属性値とjQuery 1.4.4+その前にバージョンはうまく動作します(ほとんどの場合)。それによると、私は**常に*引用*を含む*常に*をお勧めします。 –

+0

引用符は、従来のコードや古いプラグインを壊すことを避けるために、スペースのない場合にのみオプションです。だからちょうど引用符なしで英数字の文字列をPHPで書くことができるように(はい、本当に! "文字列として扱う定数"を投げます)、それはあなたがすべきことではありません。 – ThiefMaster

1

あなたがに「jQuerify」thisオブジェクト必要があります。

よりもむしろthis.val()それは$(this).val()

0
する必要があります

代わりにこれを試してください:

$("input[type=radio]").change(function(){ 
    alert($(this).val()); 
}); 

.val()メソッドを使用するには、thisをjQueryオブジェクトにラップする必要があります。

0

jQueryでは、そのAPIに渡す関数thisをセレクタに一致するDOM要素として提供します。しかし、thisはjQueryオブジェクトではなく、実際にはDOM要素のプレーンです。 thisでjQueryメソッドを呼び出す場合は、thisをjQueryにラップする必要があります。$(this)

$("input[type=radio]").change(function(){ 
    alert($(this).val()); 
}); 

ラッパーを何度も再作成しないように複数回使用する場合は、キャッシュすることを忘れないでください。

$("input[type=radio]").change(function(){ 
    var $this = $(this); 
    $this.addClass('omgitchanged'); 
    alert($this.val()); 
}); 
関連する問題