禁用复选框不会从存储的复选框数组返回结果

时间:2013-10-03 09:31:01

标签: jquery

我正在存储我的div所有的复选框到一个变量,后来我从存储的变量中找到了禁用,但是我没有得到正确的结果,相反,如果我单独找到我得到了正确的结果..

为什么我从存储的变量中找不到禁用的原因?

这是我的代码:

  var   checkedBoxes = $(".locale-container .panel ul li").find("input:checkbox"),
            disabledBoxes = checkedBoxes.find("input:checkbox:disabled"); // not getting

但是“disabledBoxes”没有从checkBox中获得结果。

如果我喜欢这样:

 var    checkedBoxes = $(".locale-container .panel ul li").find("input:checkbox"),
            disabledBoxes = $(".locale-container .panel ul li").find("input:checkbox:disabled"); // it works 

那么如何从存储变量中过滤或获取相应的复选框?

提前致谢

2 个答案:

答案 0 :(得分:1)

你必须这样做:

var $parent = $(".locale-container .panel ul li"),
    checkboxes = $parent.find("input:checkbox"),
    disabledBoxes = $parent.find("input:checkbox:disabled"); // NOW YOU GET IT

试试这个,看看它是否解决了这个问题。

由于选择器的上下文,您没有获得禁用复选框:

这里:

$(".locale-container .panel ul li").find("input:checkbox")

您已在此“var checkedBoxes”中找到了复选框,并且您试图在此上下文中看到已禁用,表示您正在检查复选框是否已禁用复选框。

解决方案是:

取一个父母,然后根据需要找到输入类型复选框。

答案 1 :(得分:0)

检查已禁用的属性。 您可以使用jQuery中的has attribute selector来实现此目的。

var disabledBoxes = $(".locale-container .panel ul li")
                     .find("input:checkbox[disabled]")

has()

   checkedBoxes.has("[disabled]")