0

首先,我使用 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>

问候!

4

1 回答 1

4

根据JQuery 文档,您必须转义方括号。

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";
}
于 2013-06-20T14:19:58.310 回答