jquery:检查是否至少有一个.element包含至少一个.element2

jquery:检查是否至少有一个.element包含至少一个.element2,jquery,Jquery,我搞砸这件事已经有一段时间了,搞不懂 很快,我需要检查某些页面/段中的内容是否正确/是否具有适当的格式 条件 必须至少有一个元素。框 每个element.box必须包含class.question的一个或多个div元素 每个.问题必须包含两个或更多:单选按钮 这是可以的(不要与其他元素混淆,这只是一个真实的示例): 这里有一些标签。。 问题回答1.部分引用的粗体内容 这里有一些标签。。 问题回答1.部分引用的粗体内容 这里有一些标签。。 问题回答1.部分引用的粗体内容 这里有一些标签。。 问题

我搞砸这件事已经有一段时间了,搞不懂

很快,我需要检查某些页面/段中的内容是否正确/是否具有适当的格式

条件

  • 必须至少有一个元素。框
  • 每个element.box必须包含class.question的一个或多个div元素
  • 每个.问题必须包含两个或更多:单选按钮
  • 这是可以的(不要与其他元素混淆,这只是一个真实的示例):

    
    这里有一些标签。。
    问题回答1.部分引用的粗体内容
    这里有一些标签。。
    问题回答1.部分引用的粗体内容
    这里有一些标签。。
    问题回答1.部分引用的粗体内容
    这里有一些标签。。
    问题回答1.部分引用的粗体内容
    
    但是这个将失败,因为在one.question div(最后一个)中,它只有一个:单选按钮,所以它无效:

    <div class="box" type="1">
            <div class="question">
                <div class="answers">
                    <table>
                        <tr>
                            <td><input type="radio" name="someName" value="1" /><label>Some Label Here..</label></td>
                            <feedback>Question response 1.<strong>some quoted content in bold</strong></feedback>
                        </tr>
                        <tr>
                            <td><input type="radio" name="someName" value="1" /><label>Some Label Here..</label></td>
                            <feedback>Question response 1.<strong>some quoted content in bold</strong></feedback>
                        </tr>
                    </table>
                </div>
            </div>
        </div>
        <div class="box" type="1">
            <div class="question">
                <div class="answers">
                    <table>
                        <tr>
                            <td><input type="radio" name="someName" value="1" /><label>Some Label Here..</label></td>
                            <feedback>Question response 1.<strong>some quoted content in bold</strong></feedback>
                        </tr>
                        <tr>
                            <td><label>Some Label Here..</label></td>
                            <feedback>Question response 1.<strong>some quoted content in bold</strong></feedback>
                        </tr>
                    </table>
                </div>
            </div>
        </div>
    
    
    这里有一些标签。。
    问题回答1.部分引用的粗体内容
    这里有一些标签。。
    问题回答1.部分引用的粗体内容
    这里有一些标签。。
    问题回答1.部分引用的粗体内容
    这里有一些标签。。
    问题回答1.部分引用的粗体内容
    
    我试过这样的东西,但对我不起作用…:

  • if($('.box').filter(函数(){ var self=$(这是); 返回self.find('.question')。长度==1&&self.find('.question:radio')。长度>1; })(长度>0) { 警报('否') }否则{ $('.box:first').fadeIn(1000); }

  • 这是:

    如果($('.box')。长度){ $('.box')。每个(函数(){ 如果($(“.question”,此).length){ $(“.question”)。每个(函数(){ 如果($(':radio',this).length>1) 警报(“正常”) }); }

    })); }否则{ 警报(“!ok”); };


  • .filter
    应该可以工作:

    $(".box .question").filter(function() {
        return $(this).find(":radio").length >= 2;
    });
    
    试一试

    var$box=$('.box'),
    valid=$box.length>0;
    如果(有效){
    $box.每个(函数(idx,box){
    var$box=$(此),
    $qtns=$box.find('.question');
    如果($qtns.length==0){
    有效=错误;
    返回false;
    }
    valid=$qtns.filter(函数(){
    返回$(this.find('input[type=“radio”]”)。长度<2;
    }).长度==0;
    如果(!有效){
    返回;
    }
    })
    }
    警报(有效)
    

    演示:

    不幸的是,它没有通过案例…:(怎么会这样?发生了什么?如果在其中一个.question div上我只放了一个:单选按钮,它仍然可以通过。我尝试了这种方式:if($(“.box.question”).filter(函数(){return$(this.find(“:radio”).length>=2;})alert('yes');else alert('no'));它将发出警报,因为有东西在那里,这将返回
    .box。问题
    符合条件的部分。接下来需要做什么?所有3个条件都必须满足…如果在1或2上失败。它不应该进一步检查…呃:D让我测试一下:D我认为它可以是一个智能jquery链接行:D:(好的,只需删除一个,如果只有一个@mariotanebaum,那么它应该失败。请参见和@mariotanebaum,第二个应该失败,因为有一个
    元素没有任何
    问题
    $(".box .question").filter(function() {
        return $(this).find(":radio").length >= 2;
    });
    
    var $boxes = $('.box'),
        valid = $boxes.length > 0;
    if (valid) {
        $boxes.each(function (idx, box) {
            var $box = $(this),
                $qtns = $box.find('.question');
            if ($qtns.length == 0) {
                valid = false;
                return false;
            }
            valid = $qtns.filter(function () {
                return $(this).find('input[type="radio"]').length < 2;
            }).length == 0;
            if (!valid) {
                return;
            }
        })
    }
    alert(valid)