我试图删除该课程,并且已经检查了#39;当用户点击“全部”按钮时,从群组中的所有按钮按钮。我使用了两组过滤按钮:类别和标签。
我已经能够创建一个功能,可以删除已经检查过的班级'从两组中的所有按钮开始,但我还没有能够将功能分离到每个组,尽管我非常接近。
最后一项功能会添加“已检查”类别。到了所有的'按钮并从该特定组中的任何其他按钮中删除该类。该功能有效,但下面有问题的行除外:
$buttonGroup.find('.is-checked').removeClass('is-checked');
代码:
// class toggling for all buttons by group
$('.button-group').each( function( i, buttonGroup ) {
var $buttonGroup = $( buttonGroup );
var $this = $(this);
$buttonGroup.on( 'click', 'button', function() {
if ( $this.hasClass('all') ) {
$buttonGroup.find('.is-checked').removeClass('is-checked');
$this.addClass('is-checked');
}
else {
$buttonGroup.find('.all').removeClass('is-checked');
}
});
});
正如标题所提到的,这是在同位素框架内用于具有组合过滤的投资组合(因此是两组不同的过滤器)。
我出错的任何想法?
答案 0 :(得分:0)
这是范围问题。变量$buttongroup
存在于each
调用的函数中,而不是在单击的事件处理程序中。我建议像这样解决它:
// When someone clicks a button in a button group.
$('.button-group button').click(function() {
// Get the button that was clicked.
$this = $(this);
// Get the button group the button that was clicked is in.
$buttonGroup = $this.parents('.button-group');
// And now this is just a copy of your old code below.
if ( $this.hasClass('all') ) {
$buttonGroup.find('.is-checked').removeClass('is-checked');
$this.addClass('is-checked');
}
else {
$buttonGroup.find('.all').removeClass('is-checked');
}
});
如您所见,此方法不需要each
。相反,该按钮使用parents()
找出它所在的按钮组。