我正在存储我的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
那么如何从存储变量中过滤或获取相应的复选框?
提前致谢
答案 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]")