我有一个form.html:
<div id="tag_option">
<li><label for="id_customer_type">Customer type:</label>
<select id="id_customer_type" class="required" name="customer_type">
<option value="" selected="selected">All</option>
<option value="NGO">NGO</option>
<option value="GOV">GOV</option>
</select>
</li>
<li>
<label for="id_tag">Tag:</label> <dl>
<dt><strong>School</strong></dt>
<dd><label for="id_tag_1"><input
name="tag"
value="2"
id="id_tag_1"
type="checkbox"> Private</label></dd>
<dd><label for="id_tag_2"><input
name="tag" value="3" id="id_tag_2" type="checkbox"
> Public</label></dd>
</dl></li>
<input id="tag_checked" name="tag_checked" value="" type="hidden">
<input id="store_filter_saved" name="store_filter_saved" value="" type="hidden">
</div>
怎么做?
我试过..
$(document).ready(function(){
function updateTagChecked() {
var list_tag_selected = [];
//$("input[name^=tag_]")
$('#tag_option :checked').each(function() {
list_tag_selected.push($(this).val());
});
$('#tag_checked').val(list_tag_selected.join("&"))
}
$(function() {
$('#tag_option input').click(updateTagChecked);
updateTagChecked();
});
我的问题在这一点上我只想指定复选框。
$('#tag_option :checked').each(function()
我尝试改为:
$("input[name^=tag]")
$('div#tag_option input[name="tag"]').attr('checked')
答案 0 :(得分:3)
如果我理解正确,您是否尝试选中名为“tag”的复选框?这样做:
$('input[name=tag]:checked')
$("input[name^=tag]")
显然会返回所有复选框,无论是否选中它们,$('div#tag_option input[name="tag"]').attr('checked')
都会从第一个输入中返回名称为“name”的checked
属性值。< / p>
修改强>
您能解释
之间的差异输出吗?$('input[name=tag]:checked')
和$('#tag_option :checked')
第一个获取具有“tag”作为input
属性值的所有name
元素,这些元素也会被检查。 “已检查”元素表示处于检查状态(即活动)的单选按钮或复选框。那个选择器会匹配这些:
<input type="checkbox" name="tag" checked="checked" />
<input type="radio" name="tag" checked="checked" />
但不其中任何一个:
<input type="checkbox" name="something_else" checked="checked" />
<input type="checkbox" name="tag" />
<input type="radio" name="not_tag" checked="checked" />
第二个获取id为tag_option
的元素内的所有已检查元素。该选择器将匹配input
中的所有div
元素:
<div id="tag_option">
<input type="checkbox" checked="checked" name="foo" />
<input type="checkbox" checked="checked" name="bar" />
<input type="radio" checked="checked" name="zyxxy" />
</div>
答案 1 :(得分:1)
之间的区别:
$( '输入[名称=标签]:检查') 同时对所有元素做一些事情。如果你对所有元素进行相同的精确操作,例如为它们提供所有类,那么它非常有用且快速,例如
$('#tag_option:checked')。each(function() 提供更多的自由,因为它迭代了每个元素,然后你可以逐个给它们特定/不同的命令