我有一个列表,每个li都有一个数据角色编号。如果任何一个孩子的数据角色数超过50
,我需要做点什么到目前为止有这个但它没有用
$('ul.chart').each(function(i) {
var dataRole = $(this).data('role');
if ($(this).children(dataRole < 51)) {
alert('all of the children are below 50')
}else {
alert('one or more of the children are above 50')
}
});
答案 0 :(得分:3)
$('ul.chart li').each(function(){
if ($(this).data('role')>50) {
alert('one or more of the children are above 50');
return false; // stops the iteration
}
});
使用过滤器(但它是等效的,并且可能在制作新集合时速度不快):
if ($('ul.chart li').filter(function(){ return $(this).data('role')>50 }).length) {
alert('one or more of the children are above 50');
}
对于本杰明,使用every
,你可以这样做
if (!$('li').get().every(function(e){ return $(e).data('role')<50 })) {
alert('one or more of the children are above 50');
}
答案 1 :(得分:3)
这样的事情:
var over50 = $('ul.chart li').filter(function() {
return $(this).data('role') > 50;
}).length > 0;
选择<li>
元素中的所有<ul class="chart">
元素,然后filters仅选择那些data-role
属性值大于50的元素检查结果对象的长度;如果它大于0那么至少有一个元素。
然后你只需使用if(over50) { doSomething() }
来执行条件逻辑。
答案 2 :(得分:0)
if($('ul.chart li').filter(function(){return $(this).data('role') > 50;}).length > 0){
// do something, one or more have data-role more then 50
}