如果DIV包含选中复选框,则将显示设置为阻止

时间:2013-10-14 18:29:45

标签: javascript jquery

我有一个由排序标准组成的菜单。每个条件的选项在div wioth类' .collapse_box'中列为复选框。

我需要检查这些div中的每一个,看看是否检查了它包含的任何复选框。如果有任何复选框,我需要将DIV显示设置为阻止。

我正在思考这些问题:

$('.collapse_box')each(function()

    if( $(this).(input:checked).length() > 0{  //here lies my problem
        $(this).show();
    }

});

看到我对javascript和jquery很新,我不知道如何返回$(this)的复选框。或者更好地说:检查$(this)中是否有任何复选框的正确方法。

2 个答案:

答案 0 :(得分:5)

您的选择器错误,元素总是以字符串或对象形式给出:

if( $(this).find('input:checked').length > 0){

此外,length不是一个函数,而是一个属性。你忘记了.find()
 Made you a jsFiddle with demo

答案 1 :(得分:1)

好吧,假设input是儿童,这样的事情会起作用:

$('.collapse_box').each(function(){
    if($(this).find('input').prop('checked')){
        $(this).show();
    }
});

.prop('checked')篇返回一个布尔值,表示是否检查了input

编辑 Martijn提出了一个很好的观点,您可以使用mod将其切换为vanilla JS。

$('.collapse_box').find('input').each(function(){
    var self = this;
    if(self.checked){
        self.style.display = 'block';
    }
});