我在jQuery中有以下代码,它返回一个名为respond的数组。返回的数组基于 输入元素的位置。
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]
响应数组看起来像false,true,true,false,true
我需要的是返回的数组基于元素的id号。所以例如我需要一个 返回的数组如下所示:true,true,false,true,false
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 :(得分: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
数组中获得一些未定义的条目)。