如何使用JQuery链接或排队自定义函数?

前端之家收集整理的这篇文章主要介绍了如何使用JQuery链接或排队自定义函数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有多个功能,为HTML的不同部分做不同的动画。我想链接或排队这些功能,所以他们将依次运行动画,而不是在同一时间。

我试图按顺序自动化多个事件,看起来像用户一直在点击不同的按钮或链接

我可以使用回调函数来执行此操作,但是我必须从不同的函数中拉取所有动画,并以正确的模式重新组合。

jquery“队列”是否有帮助?我不明白队列的documentation

示例,JQuery:

function One() {
        $('div#animateTest1').animate({ left: '+=200' },2000);
    }
    function Two() {
        $('div#animateTest2').animate({ width: '+=200' },2000);
    }

// Call these functions sequentially so that the animations
// in One() run b/f the animations in Two()
    One();
    Two();

HTML:

<div id="animatetest" style="width:50px;height:50px;background-color:Aqua;position:absolute;"></div>
    <div id="animatetest2" style="width:50px;height:50px;background-color:red;position:absolute;top:100px;"></div>

谢谢。

编辑:
我试着用timers,但我认为有更好的方法来做到这一点。

编辑#2:

让我更具体我有多个功能必须点击&在页面的不同元素上悬停事件。通常这些功能与彼此无关(它们不参考)。我想模拟一个用户通过这些事件,而不用改变我现有的功能代码

解决方法

jQuery Queue代码并没有记录在案,但基本思想是这样的:
$("#some_element").queue("namedQueue",function() {
  console.log("First");
  var self = this;
  setTimeout(function() {
    $(self).dequeue("namedQueue");
  },1000);
});

$("#some_element").queue("namedQueue",function() {
  console.log("Second");
  var self = this;
  setTimeout(function() {
    $(self).dequeue("namedQueue");
  },function() {
  console.log("Third");
});

$("#some_element").dequeue("namedQueue");

如果运行这段代码,控制台中将显示“First”,暂停1秒,在控制台中看到“Second”,再次暂停1秒,最后在控制台中看到“Third”。

基本思想是,您可以拥有绑定到元素的任意数量的命名队列。通过调用dequeue从队列中删除一个元素。您可以自己手动执行此操作多次,但如果您希望队列自动运行,您可以简单地在排队功能调用出队。

jQuery中的动画都运行在名为fx的队列中。当您为元素设置动画时,它会自动将新动画添加到队列中,如果当前没有动画正在运行,则会调用出队。如果您愿意,可以将自己的回调插入到fx队列中;您只需要在结束时手动调用出队(与任何其他队列一样使用)。

猜你在找的jQuery相关文章