javascript - 在jQuery中,如何将多个delay()方法与css()一起使用?

标签 javascript jquery jquery-events

如何实现以下目标,了解如果只有一次延迟我可以使用 setTimeout:

$(this).css().delay().css().delay().css();

编辑:

更改的 CSS 值是非数字的。

最佳答案

jQuery“.delay()”API 都是关于“效果队列”的。它实际上立即返回。

如果您对 CSS 更改进行动画处理,则执行此操作的唯一方法是使用“setTimeout()”。

可能会让事情变得更愉快的一件事是将 CSS 更改构建到数组中:

var cssChanges = [
  { delay: 500, css: { backgroundColor: "green", fontSize: "32px" }},
  { delay: 1000, css: { backgroundColor: "blue", textDecoration: "underline" }},
  { delay: 750, css: { position: "relative", marginLeft: "5px" }}
];

然后您可以使用单个例程以所需的延迟遍历列表:

function doChanges(cssChanges) {
  var index = 0;
  function effectChanges() {
    $('whatever').css(cssChanges[index].css);
    if (++index < cssChanges.length) {
      setTimeout(doChanges, cssChanges[index].delay);
    }
   }
   setTimeout(effectChanges, cssChanges[0].delay);
 }

如果您愿意,您可以将其变成一个插件,但如果您打算这样做,最好弄清楚如何使您的插件与 jQuery 中现有的动画队列设施一起播放。

关于javascript - 在jQuery中,如何将多个delay()方法与css()一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5161988/

相关文章:

jQuery 性能问题

javascript - 选择任何一个单选按钮后,单选按钮选项卡焦点无法正常工作

javascript - 使用 jQuery 防止连续点击绑定(bind)在 div 上

jquery - 将事件处理程序从 &lt;input&gt; 复制到 <div> 一个元素到另一个元素

jquery - <a> 父级的事件冒泡,从 onclick 事件监听器返回 false

javascript - 使用带有代码拆分的汇总时,有什么方法可以保留包的目录结构?

javascript - JavaScript 中的快速 nextafter 函数

javascript - 更改代码片段语法以使用此关键字

jquery - asp.net webforms ajax 更新 gridview

javascript - 将表单输入与 JSON 对象进行比较