【发布时间】:2016-04-10 06:50:35
【问题描述】:
我正在尝试运行以下 jQuery 代码。
$('body.player').find('.tab').click(function(){
$('.playerLoaders').addClass('loading');
setTimeout(function() {
if( !$(this).hasClass('active') ){
$('.playerLoaders').removeClass('loading');
$('.tab-content[data-tab="' + $(this).attr('data-tab') + '"]').addClass('active').siblings().removeClass('active');
$(this).addClass('active').siblings().removeClass('active');
}
return false;
},5000);
});
但有些事情不太正常。
div-tag "playerLoaders" 工作正常,但 tab-content-div 没有删除活动类,而是将其添加到活动选项卡中。
如果我删除 TimeOut 功能,选项卡就可以正常工作。
我做错了什么?
【问题讨论】:
-
您是否在等待 5 秒以查看情况是否发生变化?
.playLoaders将在单击时更改...其他所有内容都等待 5 秒,然后运行 IF 它没有.active类。 -
尝试将超时功能放在if语句之后
-
你到底想做什么?
-
'this' 引用的是 setTimeout 上下文,而不是外部函数上下文。你应该做 var self = this;并在 setTimeout 函数中使用 self。
标签: javascript jquery html