简单的事情:
$("#div").addClass("error").delay(1000).removeClass("error");
似乎不起作用。什么是最简单的选择?
答案 0 :(得分:348)
您可以创建一个新的队列项来删除该类:
$("#div").addClass("error").delay(1000).queue(function(next){
$(this).removeClass("error");
next();
});
或使用dequeue方法:
$("#div").addClass("error").delay(1000).queue(function(){
$(this).removeClass("error").dequeue();
});
你需要调用next
或dequeue
的原因是让jQuery知道你完成了这个排队的项目,并且它应该转到下一个项目。
答案 1 :(得分:48)
AFAIK延迟方法仅适用于数字CSS修改。
出于其他目的,JavaScript附带了一个setTimeout方法:
window.setTimeout(function(){$("#div").removeClass("error");}, 1000);
答案 2 :(得分:8)
我知道这是一篇非常古老的帖子,但我已将一些答案合并到一个支持链接的jQuery包装函数中。希望它有益于某人:
import numpy as np
import time
import theano
Exception Traceback (most recent call last)
<ipython-input-1-432f5c01387b> in <module>()
1 import numpy as np
2 import time
----> 3 import theano
c:\users\t-ninma\documents\studymaterials\theano\theano\__init__.py in <module>()
79 from theano.misc.safe_asarray import _asarray
80
---> 81 from theano.printing import pprint, pp
82
83 from theano.scan_module import scan, map, reduce, foldl, foldr, clone
c:\users\t-ninma\documents\studymaterials\theano\theano\printing.py in <module>()
42 pydot_imported_msg = "pydot can't find graphviz"
43 else:
---> 44 pd.Dot.create(pd.Dot())
45 pydot_imported = True
46 except ImportError:
C:\Users\t-ninma\AppData\Local\Continuum\Anaconda2\lib\site-packages\pydot.pyc in create(self, prog, format)
1874 raise Exception(
1875 '"{prog}" not found in path.'.format(
-> 1876 prog=prog))
1877 else:
1878 raise
Exception: "dot.exe" not found in path.
这是一个removeClass包装器:
$.fn.queueAddClass = function(className) {
this.queue('fx', function(next) {
$(this).addClass(className);
next();
});
return this;
};
现在你可以做这样的事情 - 等待1秒,添加$.fn.queueRemoveClass = function(className) {
this.queue('fx', function(next) {
$(this).removeClass(className);
next();
});
return this;
};
,等待3秒,删除.error
:
.error
答案 3 :(得分:6)
jQuery的CSS操作没有排队,但您可以通过执行以下操作使其在'fx'队列中执行:
$('#div').delay(1000).queue('fx', function() { $(this).removeClass('error'); });
与调用setTimeout完全相同,但改为使用jQuery的队列机制。
答案 4 :(得分:3)
当然,如果你像这样扩展jQuery会更简单:
$.fn.addClassDelay = function(className,delay) {
var $addClassDelayElement = $(this), $addClassName = className;
$addClassDelayElement.addClass($addClassName);
setTimeout(function(){
$addClassDelayElement.removeClass($addClassName);
},delay);
};
之后你可以像addClass一样使用这个函数:
$('div').addClassDelay('clicked',1000);
答案 5 :(得分:2)
延迟在队列上运行。据我所知,css操作(除了通过动画)没有排队。
答案 6 :(得分:1)
delay
不适用于任何队列函数,因此我们应该使用setTimeout()
。
你不需要分开东西。您需要做的就是用setTimeOut
方法包含所有内容:
setTimeout(function () {
$("#div").addClass("error").delay(1000).removeClass("error");
}, 1000);
答案 7 :(得分:0)
试试这个:
function removeClassDelayed(jqObj, c, to) {
setTimeout(function() { jqObj.removeClass(c); }, to);
}
removeClassDelayed($("#div"), "error", 1000);
答案 8 :(得分:0)
尝试以下简单的箭头功能:
dialog?.window?.apply {
requestFeature(Window.FEATURE_NO_TITLE); setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
setLayout(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT)
}
答案 9 :(得分:0)
$("#div").addClass("error").show(0).delay(1000).removeClass("error");
稍后谢谢我。