【问题标题】:Jquery queue methodjQuery队列方法
【发布时间】:2012-06-14 15:32:38
【问题描述】:

我在理解 jquery 队列方法时遇到了一些麻烦。我有下面的代码,基本上是想让函数textScroll的四个部分一个接一个地执行。任何帮助将不胜感激。

 $.fn.pause = function (n) {
  return this.queue(function () {
    var el = this;
    setTimeout(function () {
  return $(el).dequeue();
    }, n);
  });
};

function textScroll(){

    $('#winner1, #winner2').css("display", "block")
    .pause(4000)
    .animate({left: '-1000px'}, 2000);

    $('#winner3, #winner4').fadeIn()
    .pause(4000)
    .animate({left: '-1000px'}, 2000);

    $('#winner5, #winner6').fadeIn()
    .pause(4000)
    .animate({left: '-1000px'}, 2000);

    $('.winner_scroll').css("display", "none")
    .pause(1000)
    .css("left", "1000px");
    }

【问题讨论】:

  • 你应该看看delay()方法;它会为您执行此操作,但您必须使用 queue() 方法来排队 css() 调用,因为默认情况下不使用 fx 队列。
  • 谢谢马特,你能举个简单的例子来说明你的意思吗?
  • ` $('.winner_scroll').("display", "none")` 嗯,缺少.css
  • 谢谢。虽然这不是问题,但我已经在这个问题上停留了一段时间。

标签: jquery queue logic


【解决方案1】:

我不明白最后一部分将显示设置为无,然后在它不显示时移动它......看起来很奇怪,但无论如何:如果你愿意,你可以硬编码变量,但我创建了它们以简单的方式显示一个示例:这使用动画的回调来开始下一个。

var me = {
    left: "-1000"
};
var myani = 3000;
var mywait = 4000;

function textScroll() {
    $('#winner1, #winner2').css("display", "block").animate(me, myani, function() {
        $('#winner3, #winner4').fadeIn().delay(mywait).animate(me, myani, function() {
            $('#winner5, #winner6').fadeIn().delay(mywait).animate(me, myani, function() {
                $('.winner_scroll').css("display", "none").delay(1000).css("left", "1000px");
            });
        });
    });
}

CSS 在这方面不好:http://jsfiddle.net/MarkSchultheiss/q3s9s/ 但它是一个工作示例。

【讨论】:

  • 请注意,我不认为最后的延迟是真的需要/做任何事情,因为那里没有动画应该是活动的(而且它也没有显示......)由你决定如何来处理这个问题。
  • 谢谢马克,这真的很有帮助。 Stack Overflow 很棒,哈哈。
猜你喜欢
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多