1

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

为什么我没有从我的存储变量中找到禁用的?

这是我的代码:

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

但是“disabledBoxes”没有从复选框中得到结果。

如果我这样做:

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

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

提前致谢

4

2 回答 2

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”中有复选框,并且您试图在此上下文中看到禁用,这意味着您正在检查复选框是否已禁用复选框。

解决方案是:

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

于 2013-10-03T09:44:44.833 回答
0

检查禁用的属性。您可以在 jQuery 中使用has 属性选择器来实现这一点。

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

或使用has()

   checkedBoxes.has("[disabled]")
于 2013-10-03T09:32:07.537 回答