Jquery - 如果有任何子项的数据值大于50,则计算出来

时间:2013-05-23 11:02:46

标签: jquery

我有一个列表,每个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')              
    }                  
}); 

3 个答案:

答案 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
}