延迟后使用jQuery添加一个类
当单击一个元素时,我想向body元素添加一个类,但有一点延迟。 因此,单击element1,然后在.5秒后,主体是一个给定的新类 我用的这个在某种程度上是有效的延迟后使用jQuery添加一个类,jquery,delay,Jquery,Delay,当单击一个元素时,我想向body元素添加一个类,但有一点延迟。 因此,单击element1,然后在.5秒后,主体是一个给定的新类 我用的这个在某种程度上是有效的 $('.element1').click(function() { $('body').delay(500).queue(function(){ $(this).addClass('left-bg') }); }); 然而,我有另一个点击事件,它从正文中删除了这个左bg类 $('.another-ele
$('.element1').click(function() {
$('body').delay(500).queue(function(){
$(this).addClass('left-bg')
});
});
然而,我有另一个点击事件,它从正文中删除了这个左bg类
$('.another-element').click(function() {
$('body').removeClass('left-bg');
});
但是下一次单击.element1时,它根本不会将左bg类应用于主体
希望这是有道理的。有人能帮我做这件事吗,或者建议另一种方法吗?请排好队:
您需要使用.stop()
您需要排队
$('.element1').click(function() {
$('body').delay(500).queue(function(){
$(this).addClass('left-bg');
$(this).dequeue()
});
});
如前所述使用此选项-
var bgch;
$('.element1').click(function() {
bgch = setTimeout((function(){$('body').addClass('left-bg');}),500);
});
$('.another-element').click(function() {
$('body').removeClass('left-bg');
clearTimeout(bgch);
});
请记住,您的延迟可能导致问题: -压紧元件1 -按另一个元素 -删除类 -延迟后添加类 为了确保一切正常运行,您必须跟踪正在发生的事情,并且您应该检查类是否已在body元素上,因此该类不会应用两次:
var bodyClassTracker = 0;
var handledClass = 'left-bg';
$('.element1').click(function() {
bodyClassTracker = 1;
$('body').delay(500).queue(function(){
var eleBody = $('body');
if (!eleBody.hasClass(handledClass))
eleBody.addClass(handledClass);
bodyClassTracker = 0;
eleBody.clearQueue();
});
});
$('.another-element').click(function() {
var removerFun = function(){
var eleBody = $('body');
if (eleBody.hasClass(handledClass))
eleBody.removeClass(handledClass);
eleBody.clearQueue();
};
if (bodyClassTracker == 1)
$('body').delay(500).queue(removerFun);
else
removerFun();
});
在这里,您可以测试和演示代码。
设置车身后,需要重新安装车身
$('#add').click(function() {
$('body').delay(500).queue(function(){
$(this).addClass('left-bg')
}).stop();
});
$('#rem').click(function() {
$('body').removeClass('left-bg');
});
var bodyClassTracker = 0;
var handledClass = 'left-bg';
$('.element1').click(function() {
bodyClassTracker = 1;
$('body').delay(500).queue(function(){
var eleBody = $('body');
if (!eleBody.hasClass(handledClass))
eleBody.addClass(handledClass);
bodyClassTracker = 0;
eleBody.clearQueue();
});
});
$('.another-element').click(function() {
var removerFun = function(){
var eleBody = $('body');
if (eleBody.hasClass(handledClass))
eleBody.removeClass(handledClass);
eleBody.clearQueue();
};
if (bodyClassTracker == 1)
$('body').delay(500).queue(removerFun);
else
removerFun();
});
$('#add').click(function() {
$('body').delay(500).queue(function(){
$(this).addClass('left-bg')
}).stop();
});
$('#rem').click(function() {
$('body').removeClass('left-bg');
});