首先,我使用 prop("checked") 而不是 attr("checked") ,因为据我所知,该 prop 用于检索复选框是否被选中,并且 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>
问候!