出于某种原因,我无法让 jQuery 按顺序运行。
我想单击一个按钮,并按顺序执行以下功能:
- 将
焦点
赋予文本区域 - 向文本区域添加
box-shadow
- 延迟
100ms
- 向文本区域添加一个
transition
类 - 移除
box-shadow
并观察它淡出
效果
但是,当我这样做时,它会一次完成所有操作,因此 box-shadow
永远不会出现。
或者,如果我删除最后一个阶段,则框阴影淡入
,这意味着 (4) 发生在 (2) 之前。
有什么想法吗?
最佳答案
The .delay() method is best for delaying between queued jQuery effects. Because it is limited—it doesn't, for example, offer a way to cancel the delay—.delay() is not a replacement for JavaScript's native setTimeout function, which may be more appropriate for certain use cases.
来源:http://api.jquery.com/delay/
您提到的其他点当然都会立即发生(眼睛),因为没有延迟阻止它。
尝试:http://jsfiddle.net/JH4fM/2/
$('#change').on('click', function () {
var $el = $(".snapp_view_ask_question_textarea");
$el.focus().css("box-shadow", "rgba(139, 0, 0, 0.5) 0px 0px 30px 2px");
setTimeout(function () {
$el.css("box-shadow", "");
}, 400);
});
关于JQuery 未按顺序运行以淡出框阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12263212/