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

爲什麼這不起作用? 我想要的是,每次選擇單選按鈕時,頁面都會提醒其值。Jquery val()不會工作?

+0

你有什麼錯誤嗎?執行此操作時是否準備好了DOM?我們需要用HTML查看整個頁面。 –

回答

10

我相信你需要這樣做:

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

正如@Eonasdan已經說了,你需要使用$(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()); 
}); 

您必須將this包裝在jQuery對象中以使用.val()方法。

0

在jQuery中,您傳遞給它的API的函數提供this作爲與您的選擇器匹配的DOM元素。但是,this不是一個jQuery對象,它實際上是一個DOM元素的平淡。如果您想在this上調用jQuery方法,則需要在jQuery中包裝this$(this)

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

如果您多次使用它,請不要忘記緩存它,以避免重新創建包裝。

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