我有一个函数需要遍历所有选择标签和复选框,获取它们的名称和值,然后将其分配给“数据”对象。这是代码
data_query:->
data = {}
$('input[type="checkbox"]').each ->
data[$(this).attr('name')] = $(this).is(":checked")
$('select').each ->
data[$(this).attr('name')] = $(this).val()
# console.log data
return data
结果应该是这样的:
Object {select_one: "value", select_two: "value", ag_1: false, ag_2: true, ft_1: false, ft_2: false, bg_1: false}
但我最后得到的是:
Object {select_one: "value", select_two: "value", ag_1: false} #it gets only one checkbox
我了解回调的性质,我知道它为什么会发生 - 外部函数在内部循环结束之前结束,但我不知道如何解决这个问题
谢谢!
编辑:这里是 HTML。它只是简单的选择标签和复选框
<li><label for="ag_1"><input name="ag_1" type="checkbox" id="ag_1"> AG-1</label></li>
<li><label for="ag_2"><input name="ag_2" type="checkbox" id="ag_2"> AG-2</label></li>
<li><label for="ft_1"><input name="ft_1" type="checkbox" id="ft_1"> FT-1</label></li>
<li><label for="ft_2"><input name="ft_2" type="checkbox" id="ft_2"> FT-2</label></li>
<li><label for="bg_2"><input name="bg_1" type="checkbox" id="bg_2"> BG-1</label> </li>
<!-- there's a bunch of these -->
<select name="select_one" id="select_one">
<option value="">-- Select One --</option>
<option value="ac_1">AC-1</option>
<option value="ac_2">AC-2</option>
<option value="ac_3">AC-3</option>
<option value="ac_4">AC-4</option>
<option value="ac_5">AC-5</option>
<option value="ac_6">AC-6</option>
<option value="ac_7">AC-7</option>
</select>