2015-06-26 65 views
1

由於某些原因,即使我將checked屬性設置爲單選按鈕,我的jQuery代碼始終默認爲列表中的最後一個按鈕,爲什麼?jQuery:檢查獲取最後一個元素的值

HTML

<input class=t type=radio name=drop value=1 checked>one 
<input class=t type=radio name=drop value=2>two 

jQuery的

var dropResult; 
$(function(){ 
    $(".t").click(function(){ 
     dropResult = $("input[name=drop]:checked").val(); 
    }); 
}); 
+0

試試這個 - $(「input [type ='radio']。t:checked」)。val ); – nikhil

+0

我無法重現該問題。當我嘗試它時,'dropResult'始終是複選框的值。見http://jsfiddle.net/barmar/zrznppvb/ – Barmar

+0

是的,我剛剛意識到,剛纔這是一個大頭黑髮。需要遠離計算機,然後回來看看究竟發生了什麼。 – Darkrum

回答

1

好吧,這樣看來我失去我的腦海裏我沒有給dropresult一個defualt值。直到單選按鈕被更改並且新值更新爲變量時,checked屬性纔是純粹的美學。這是非常奇怪的,你會認爲,因爲沒有價值,任何代碼檢查它的值使用會破壞

修正了

var dropResult = 1; 
0

這是因爲您使用的單選按鈕具有相同name。具有相同名稱的單選按鈕一次只能有一個

看來,當具有相同名稱的多個單選按鈕被選中,與實際檢查默認爲最後一個

所以當你使用:checked,它將只適用於在實際選擇的一個(在此情況下,最後一個)

console.log($(':checked').val());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<input class=t type=radio name=drop value=1 checked>one 
 
<input class=t type=radio name=drop value=2 checked>two 
 
<input class=t type=radio name=drop value=3 checked>three

+0

但是':checked'屬性只適用於被選中的屬性。 – Barmar

+0

@Barmar,好點,謝謝 – AmmarCSE

+0

是的,我知道這就是單選按鈕的工作原理。 – Darkrum

0

它的正常工作試試這個

var dropResult; 
 
$(function(){ 
 
    $(".t").click(function(){ 
 
     dropResult = $("input[name=drop]:checked").val(); 
 
     alert(dropResult); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class=t type=radio name=drop value=1 checked>one 
 
<input class=t type=radio name=drop value=2>two

相關問題