Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查n个元素是否包含设置为true的数据属性_Javascript_Jquery - Fatal编程技术网

Javascript 检查n个元素是否包含设置为true的数据属性

Javascript 检查n个元素是否包含设置为true的数据属性,javascript,jquery,Javascript,Jquery,我有一个网站,其中有五个复选框,一个div包含另一个div,每个div包含五个隐藏的输入,其值1或为空。该值来自DB 这是一个用div表示div容器的示例: <input checkbox value="a"> <input checkbox value="b"> <input checkbox value="c"> <input checkbox value="d"> <input checkbox value="e"> <di

我有一个网站,其中有五个复选框,一个div包含另一个div,每个div包含五个隐藏的输入,其值
1
为空。该值来自DB

这是一个用div表示div容器的示例:

<input checkbox value="a">
<input checkbox value="b">
<input checkbox value="c">
<input checkbox value="d">
<input checkbox value="e">
<div class="container">
    <div class="content" data-name="combine">
        <input type="hidden" value="" data-name="a" />
        <input type="hidden" value="" data-name="b" />
        <input type="hidden" value="" data-name="c" />
        <input type="hidden" value="" data-name="d" />
        <input type="hidden" value="" data-name="e" />
    </div>

    <div class="content" data-name="combine">
        <input type="hidden" value="1" data-name="a" />
        <input type="hidden" value="" data-name="b" />
        <input type="hidden" value="" data-name="c" />
        <input type="hidden" value="1" data-name="d" />
        <input type="hidden" value="" data-name="e" />
    </div>
</div>

javascript
首先检查
div.container
是否有child,如果有child,则代码迭代每个child。在每个子项上,我迭代五个each复选框(
enabledChecks
),查看隐藏的输入是否为空。如果五个输入为空,那么我需要添加'div.blocked'。

如果我正确理解了问题,您希望找到与某个选择器匹配的div,该选择器没有子
输入
元素和非空值。
.filter
方法似乎非常适合这里:

$("[data-name='"+name+"'] div.tagsProds")
    .filter(function() {
        // assert that at least one child input has a value
        var $inputsWithValue = $(this).find("input[name='avail_" + v + "'][value!='']");
        return $inputsWithValue.length === 0;
    })
    .each(function() {
        // now act on those value-less divs
        $(this)
            .append("<div class='blocked'></div>")
            .addClass("js_noSortable")
            .unbind("click");
    });
$(“[data name=”+name+“]div.tagsProds”)
.filter(函数(){
//断言至少有一个子输入具有值
var$inputsWithValue=$(this).find(“输入[name='avail\'+v+']”][value!=''”;
返回$inputsWithValue.length==0;
})
.each(函数({
//现在对那些无价值的div采取行动
$(本)
.附加(“”)
.addClass(“js_noSortable”)
.解除绑定(“单击”);
});
另一个仅选择器选项可能如下所示:

$("[data-name='"+name+"'] div.tagsProds:not(:has(input[name='avail_" + v + "'][value!='']))")
    .each(function() {
        // now act on those value-less divs
        $(this)
            .append("<div class='blocked'></div>")
            .addClass("js_noSortable")
            .unbind("click");
    });
$(“[data name=”+name+“]div.tagsProds:not(:has(input[name='avail.'+v+”][value!=”))
.each(函数({
//现在对那些无价值的div采取行动
$(本)
.附加(“”)
.addClass(“js_noSortable”)
.解除绑定(“单击”);
});
JSFiddle:


请注意,上面的示例遵循示例代码中的选择器,但不会对示例标记起作用。

如果我正确理解了这个问题,您希望找到与某个选择器匹配的div,该选择器没有具有非空值的子
输入
元素。
.filter
方法似乎非常适合这里:

$("[data-name='"+name+"'] div.tagsProds")
    .filter(function() {
        // assert that at least one child input has a value
        var $inputsWithValue = $(this).find("input[name='avail_" + v + "'][value!='']");
        return $inputsWithValue.length === 0;
    })
    .each(function() {
        // now act on those value-less divs
        $(this)
            .append("<div class='blocked'></div>")
            .addClass("js_noSortable")
            .unbind("click");
    });
$(“[data name=”+name+“]div.tagsProds”)
.filter(函数(){
//断言至少有一个子输入具有值
var$inputsWithValue=$(this).find(“输入[name='avail\'+v+']”][value!=''”;
返回$inputsWithValue.length==0;
})
.each(函数({
//现在对那些无价值的div采取行动
$(本)
.附加(“”)
.addClass(“js_noSortable”)
.解除绑定(“单击”);
});
另一个仅选择器选项可能如下所示:

$("[data-name='"+name+"'] div.tagsProds:not(:has(input[name='avail_" + v + "'][value!='']))")
    .each(function() {
        // now act on those value-less divs
        $(this)
            .append("<div class='blocked'></div>")
            .addClass("js_noSortable")
            .unbind("click");
    });
$(“[data name=”+name+“]div.tagsProds:not(:has(input[name='avail.'+v+”][value!=”))
.each(函数({
//现在对那些无价值的div采取行动
$(本)
.附加(“”)
.addClass(“js_noSortable”)
.解除绑定(“单击”);
});
JSFiddle:


请注意,上面的示例遵循示例代码中的选择器,但不会对示例标记起作用。

如果我正确理解了这个问题,您希望找到与某个选择器匹配的div,该选择器没有具有非空值的子
输入
元素。
.filter
方法似乎非常适合这里:

$("[data-name='"+name+"'] div.tagsProds")
    .filter(function() {
        // assert that at least one child input has a value
        var $inputsWithValue = $(this).find("input[name='avail_" + v + "'][value!='']");
        return $inputsWithValue.length === 0;
    })
    .each(function() {
        // now act on those value-less divs
        $(this)
            .append("<div class='blocked'></div>")
            .addClass("js_noSortable")
            .unbind("click");
    });
$(“[data name=”+name+“]div.tagsProds”)
.filter(函数(){
//断言至少有一个子输入具有值
var$inputsWithValue=$(this).find(“输入[name='avail\'+v+']”][value!=''”;
返回$inputsWithValue.length==0;
})
.each(函数({
//现在对那些无价值的div采取行动
$(本)
.附加(“”)
.addClass(“js_noSortable”)
.解除绑定(“单击”);
});
另一个仅选择器选项可能如下所示:

$("[data-name='"+name+"'] div.tagsProds:not(:has(input[name='avail_" + v + "'][value!='']))")
    .each(function() {
        // now act on those value-less divs
        $(this)
            .append("<div class='blocked'></div>")
            .addClass("js_noSortable")
            .unbind("click");
    });
$(“[data name=”+name+“]div.tagsProds:not(:has(input[name='avail.'+v+”][value!=”))
.each(函数({
//现在对那些无价值的div采取行动
$(本)
.附加(“”)
.addClass(“js_noSortable”)
.解除绑定(“单击”);
});
JSFiddle:


请注意,上面的示例遵循示例代码中的选择器,但不会对示例标记起作用。

如果我正确理解了这个问题,您希望找到与某个选择器匹配的div,该选择器没有具有非空值的子
输入
元素。
.filter
方法似乎非常适合这里:

$("[data-name='"+name+"'] div.tagsProds")
    .filter(function() {
        // assert that at least one child input has a value
        var $inputsWithValue = $(this).find("input[name='avail_" + v + "'][value!='']");
        return $inputsWithValue.length === 0;
    })
    .each(function() {
        // now act on those value-less divs
        $(this)
            .append("<div class='blocked'></div>")
            .addClass("js_noSortable")
            .unbind("click");
    });
$(“[data name=”+name+“]div.tagsProds”)
.filter(函数(){
//断言至少有一个子输入具有值
var$inputsWithValue=$(this).find(“输入[name='avail\'+v+']”][value!=''”;
返回$inputsWithValue.length==0;
})
.each(函数({
//现在对那些无价值的div采取行动
$(本)
.附加(“”)
.addClass(“js_noSortable”)
.解除绑定(“单击”);
});
另一个仅选择器选项可能如下所示:

$("[data-name='"+name+"'] div.tagsProds:not(:has(input[name='avail_" + v + "'][value!='']))")
    .each(function() {
        // now act on those value-less divs
        $(this)
            .append("<div class='blocked'></div>")
            .addClass("js_noSortable")
            .unbind("click");
    });
$(“[data name=”+name+“]div.tagsProds:not(:has(input[name='avail.'+v+”][value!=”))
.each(函数({
//现在对那些无价值的div采取行动
$(本)
.附加(“”)
.addClass(“js_noSortable”)
.解除绑定(“单击”);
});
JSFiddle:


请注意,上面的示例遵循示例代码中的选择器,但不会对示例标记起作用。

因为我没有足够的声誉来写评论,所以我会写一个答案


首先,如果您想找到一种使用
jQuery
函数的方法,我认为您的答案非常有趣,但由于我不知道任何函数可以这样做,我认为您可以创建一个
array()
,当您检查输入是否为空值时,将其推送到数组中,循环结束后,请检查
数组()
长度
,如果它与您的复选框数匹配,则添加
。阻塞的

,因为我没有足够的声誉来写评论,所以我会写一个答案