2011-06-06 57 views
1

在jQuery中我有以下代碼,它返回一個名爲responses的數組。返回的數組基於輸入元素的 位置。將輸入響應映射到使用jQuery的數組中

var resp = $("input[id^= 'Answer_Response']"); 
responses: jQuery.map(resp, function (a) { return a.checked; }) 

<input id="Answer_Response[2]" name="Answer.Response[2]" type="checkbox" /> 
<input id="Answer_Response[0]" name="Answer.Response[0]" type="checkbox" /> 
<input id="Answer_Response[1]" name="Answer.Response[1]" type="checkbox" /> 
<input id="Answer_Response[4]" name="Answer.Response[4]" type="checkbox" /> 
<input id="Answer_Response[3]" name="Answer.Response[3]" type="checkbox" /> 

所以當輸入信號是:

false // for Answer.Response[2] 
true  // for Answer.Response[0] 
true  // for Answer.Response[1] 
false // for Answer.Response[4] 
true  // for Answer.Response[3] 

響應陣列看起來像假的,真的,真的,假的,真正的

我需要的是對返回數組是基於元素的ID號。因此,例如,我需要一個 返回數組看起來像這樣:真,真,假,真,假

true // for Answer.Response[0] 
    true // for Answer.Response[1] 
    false // for Answer.Response[2] 
    true // for Answer.Response[3] 
    false // for Answer.Response[4] 

是否有某種方式,我可以在jQuery的做到這一點?請注意,我無法改變回復的顯示方式。我被要求在jQuery中完成這一切。

我希望有人能提出一些建議。我想我只是需要一些不同的方式來做resp的映射,但我不知道我該怎麼做。

回答

0

一種方法是使用each

var resp = [ ]; 
$("input[id^= 'Answer_Response']").each(function() { 
    // Pull the number out of things like "Answer.Response[2]" 
    var i = parseInt(this.id.match(/\d+/)[0], 10); 
    resp[i] = this.checked; 
}); 

這應該讓只要id屬性恰好有一個子看起來像一些做的工作(或者至少第一場比賽是一個你想要的),並且你的id屬性中沒有任何空缺(或者你會在你的resp陣列中得到一些未定義的條目)。

和一個簡單的演示:http://jsfiddle.net/ambiguous/hHS2K/

+0

謝謝。我現在就試試這個 – 2011-06-06 05:57:43

+0

很棒。謝謝你的幫助! – 2011-06-06 06:14:41