2013-11-25 37 views
1

类指望我有简单的HTML:观看的元素通过使用jQuery

ul > li > button 

,并有一些JavaScript代码:

$('.side-filters .filters_list li').each(function(){ 
    $(this).find('button').click(function(){ 

     var arrList = $('.side-filters .filters_list li .active').map(function(){ 
      return $(this).attr('id'); 
     }).get(); 

     if($(this).hasClass('active')) { 
      $(this).removeClass('active'); 

     } else { 
      $(this).addClass('active'); 
     } 
    }); 
}); 

如果我点击一个按钮,添加类“主动”的按钮,如果再次点击,请删除类。

我需要活动计数元素和'活动'类。如果至少有一个给定的ul类为“someclass”,并且如果再次单击并且没有活动类的元素,请从UI中删除“someclass”。

我该怎么做?

+1

在这里发表您的HTML了。 – Krishna

+0

那么你有什么代码试图实现这一点。所示的样本根本不会尝试这样做。 –

+0

您正在重新创建toggleClass,并且在添加和删除它之前正在读取活动类。 – epascarello

回答

1

有过的元素无需环路和点击添加到每个按钮。添加一个侦听器。

//listen for click on a button 
$('.side-filters', "click", ".filters_list li button", function(){ 

    //toggle the active class on the button 
    var button = $(this).toggleClass("active"); 

    //see if anything is selected 
    var hasSelection = $('.side-filters .filters_list li .active').length > 0; 

    //toggle a class on the closest ul based on if anything is selected. 
    button.closest("ul").toggleClass("someclass", hasSelection); 

}); 

参考文献:

0

您可以添加此function()

function someclass() { 
    var count = $('.active').length; 
    if (count >= 1) { 
     $('ul').addClass('clasHere') 
    } else { 
     $('ul').removeClass('clasHere') 
    } 
}