Javascript jQuery切换函数在一段时间后失败
我编写了一个jQuery切换函数,如下所示:Javascript jQuery切换函数在一段时间后失败,javascript,jquery,Javascript,Jquery,我编写了一个jQuery切换函数,如下所示: // category filter $.fn.clickToggle = function(a, b) { var ab = [b, a]; function cb(){ ab[this._tog^=1].call(this); } return this.on('click', cb); }; $.fn.swapClass = function(oldClass, newClass) { return $(this).remov
// category filter
$.fn.clickToggle = function(a, b) {
var ab = [b, a];
function cb(){ ab[this._tog^=1].call(this); }
return this.on('click', cb);
};
$.fn.swapClass = function(oldClass, newClass) {
return $(this).removeClass(oldClass)
.addClass(newClass)
.fadeIn('fast');
};
$('.category-filter').clickToggle(function() {
// clear old
$('.category-filter').each(function() {
$(this).fadeTo('fast', 1.0);
$(this).swapClass('label-success', 'label-default');
})
// get new
var category = $(this).attr('data-category');
$(this).swapClass('label-default', 'label-success');
// apply new
$('.category-filter').each(function() {
if (!($(this).attr('data-category').indexOf(category) >= 0)) {
$(this).fadeTo('fast', 0.5);
}
})
$('.article_container').each(function() {
if ($(this).attr('data-categories').indexOf(category) >= 0) {
$(this).fadeIn('fast');
} else {
$(this).fadeOut('fast');
}
})
}, function() {
$(this).swapClass('label-success', 'label-default');
$('.article_container').each(function() { $(this).fadeIn('fast') })
$('.category-filter').each(function() { $(this).fadeTo('fast', 1.0) })
});
它可以正常工作,请参见JSFIDLE-但是在单击一个链接,然后“跳过”单击另一个链接之后,切换似乎中断了
我的功能有什么问题?我如何更改它,以便它切换用户是再次单击同一链接还是下一个链接?这是因为即使在单击某个元素时更改了其他元素的样式,也没有更改
\u tog
值
您正试图以两种不同的方式维持状态。一个通过.\u tog,另一个通过类标签success/label default。我建议不要使用。\u tog
,而是依赖于类。事实上,我会大大简化整个javascript
抱歉,这只是一个简单的回答,我必须运行,但您可以这样做:
$('.category filter')。单击(函数(){
$('.category filter').not(this.removeClass('active');
$(this.toggleClass('active');
});代码>
.category filter{背景色:#777;过渡:all.5s ease in out;}
.category-filter.active{颜色:绿色;背景色:#5cb85c;}
.category filter.active[data category='custom article']~div>.article\u容器:非([data categories*='custom article']),
.category filter.active[data category='retirement']~div>。文章容器:非([data categories*='retirement']),
.category filter.active[data category='property']~div>。文章容器:非([data categories*='property']))
{
显示:无;
}
海关物品
退休
财产
习俗
另一种习俗
退休
财产
财产和退休
这是因为,即使在单击一个元素时更改了其他元素的样式,也没有更改\u tog
值
您正试图以两种不同的方式维持状态。一个通过.\u tog,另一个通过类标签success/label default。我建议不要使用。\u tog
,而是依赖于类。事实上,我会大大简化整个javascript
抱歉,这只是一个简单的回答,我必须运行,但您可以这样做:
$('.category filter')。单击(函数(){
$('.category filter').not(this.removeClass('active');
$(this.toggleClass('active');
});代码>
.category filter{背景色:#777;过渡:all.5s ease in out;}
.category-filter.active{颜色:绿色;背景色:#5cb85c;}
.category filter.active[data category='custom article']~div>.article\u容器:非([data categories*='custom article']),
.category filter.active[data category='retirement']~div>。文章容器:非([data categories*='retirement']),
.category filter.active[data category='property']~div>。文章容器:非([data categories*='property']))
{
显示:无;
}
海关物品
退休
财产
习俗
另一种习俗
退休
财产
财产和退休
这是因为,即使在单击一个元素时更改了其他元素的样式,也没有更改\u tog
值
您正试图以两种不同的方式维持状态。一个通过.\u tog,另一个通过类标签success/label default。我建议不要使用。\u tog
,而是依赖于类。事实上,我会大大简化整个javascript
抱歉,这只是一个简单的回答,我必须运行,但您可以这样做:
$('.category filter')。单击(函数(){
$('.category filter').not(this.removeClass('active');
$(this.toggleClass('active');
});代码>
.category filter{背景色:#777;过渡:all.5s ease in out;}
.category-filter.active{颜色:绿色;背景色:#5cb85c;}
.category filter.active[data category='custom article']~div>.article\u容器:非([data categories*='custom article']),
.category filter.active[data category='retirement']~div>。文章容器:非([data categories*='retirement']),
.category filter.active[data category='property']~div>。文章容器:非([data categories*='property']))
{
显示:无;
}
海关物品
退休
财产
习俗
另一种习俗
退休
财产
财产和退休
这是因为,即使在单击一个元素时更改了其他元素的样式,也没有更改\u tog
值
您正试图以两种不同的方式维持状态。一个通过.\u tog,另一个通过类标签success/label default。我建议不要使用。\u tog
,而是依赖于类。事实上,我会大大简化整个javascript
抱歉,这只是一个简单的回答,我必须运行,但您可以这样做:
$('.category filter')。单击(函数(){
$('.category filter').not(this.removeClass('active');
$(this.toggleClass('active');
});代码>
.category filter{背景色:#777;过渡:all.5s ease in out;}
.category-filter.active{颜色:绿色;背景色:#5cb85c;}
.category filter.active[data category='custom article']~div>.article\u容器:非([data categories*='custom article']),
.category filter.active[data category='retirement']~div>。文章容器:非([data categories*='retirement']),
.category filter.active[data category='property']~div>。文章容器:非([data categories*='property']))
{
显示:无;
}
海关物品
退休
财产
习俗
另一种习俗
退休
财产
财产和退休