开始我使用prop(“checked”)代替attr(“checked”),因为好像我理解它,使用prop检索wether te复选框是否被检查,并且attr只告诉你是否设置了html属性(就像在初始的html代码中一样)。
现在我有两个用php编写的复选框:
echo '<h4>Special</h4>';
$specials=array('Is Home Page', 'Does not appear in navigation');
for($i=0;$i<count($specials);++$i){
if($specials[$i]!=''){
echo '<input type="checkbox" name="special[',$i,']"';
if($page['special']&pow(2,$i))
echo ' checked="checked"';
echo ' />',$specials[$i],'<br />';
}
}
结果是元素:
<input type="checkbox" name="special[0]"/>
<input type="checkbox" name="special[1]"/>
当我选中其中一个复选框时,我想检索要发送到服务器的值,但这似乎不起作用:
var $home = $("#tabs-advanced-options input[name='special[0]']");
//if($home.is(":checked")){ // always returns false
if($home.prop("checked")){ // always returns undefined
special["0"] = "Home";
}
var $hidden = $("#tabs-advanced-options input[name='special[1]']");
//if($hidden.is(":checked")){ // always returns false
if($hidden.prop("checked")){ // always returns undefined
special["1"] = "isHidden";
}
正如代码注释中指出的那样,prop(“checked”)始终返回undefined。 我现在检查复选框... 我也尝试过is(“:checked”),但总是返回false。 每次只选择一个dom元素(我知道.prop()仅适用于集合中的第一个)
感谢任何想法!
选择器是正确的,因为我在控制台中测试它并返回正确的结果(有和没有反斜杠 - :
$("#tabs-advanced-options input[name='special\\[1\\]']")
<input type="checkbox" name="special[1]">
$("#tabs-advanced-options input[name='special\\[0\\]']")
<input type="checkbox" name="special[0]">
$("#tabs-advanced-options input[name='special[1]']")
<input type="checkbox" name="special[1]">
$("#tabs-advanced-options input[name='special[0]']")
<input type="checkbox" name="special[0]">
我使用过jQuery版本
我正在使用jquery 1.9.0:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
问候!
答案 0 :(得分:4)
根据JQuery documention你必须逃避方括号。
var $home = $("#tabs-advanced-options input[name='special\\[0\\]']");
//if($home.is(":checked")){ // always returns false
if($home.prop("checked")){ // always returns undefined
special["0"] = "Home";
}
var $hidden = $("#tabs-advanced-options input[name='special\\[1\\]']");
//if($hidden.is(":checked")){ // always returns false
if($hidden.prop("checked")){ // always returns undefined
special["1"] = "isHidden";
}