代码之家  ›  专栏  ›  技术社区  ›  dominik

jquery队列消息

  •  2
  • dominik  · 技术社区  · 15 年前

    我有一个简短的功能,可以在网站上显示消息。

    function showHint() { 
        $('#notify').html('message text').show('slide', {direction: 'right'}, 500);
    }
    

    还有一个隐藏信息的函数。

    function hideHint() { 
        $('#notify').hide('slide', {direction: 'right'}, 500);
    }
    

    问题是,如果我多次调用此函数,它会试图同时显示所有消息,所有消息都会中断。我想调用函数两次,然后它应该对动画进行排队并显示一条又一条消息。该函数应同时调用多次,但应逐个显示。当firs隐藏时,应显示下一条消息。

    我怎么解决这个问题?会很好!

    3 回复  |  直到 14 年前
        1
  •  1
  •   Ryan McGeary    15 年前

    这里有一个小的自定义插件,我过去使用过,它一个接一个地链接了一堆动画。

    // Good for serializing animations
    $.fn.chain = function(fn) {
      var elements = this;
      var i = 0;
      function nextAction() {
        if (elements.eq(i)) fn.apply(elements.eq(i), [nextAction]);
        i++;
      }
      nextAction();
    };
    

    你可以这样称呼它( Here's an example of it in use ):

    $(document).ready(function() {
      $('li').chain(function(nextChain) { this.slideToggle("fast", nextChain); });
    });
    

    你传递给的函数 chain 传递另一个函数,该函数在使用一个循环时必须调用。在上面的示例中,我们只传递 nextChain 函数作为对 slideToggle .

        2
  •  0
  •   Jarrett Widman    14 年前

    ShowHint函数可以通过隐藏通知来启动,当通知完成时,回调将是现有的ShowHint函数,这将更改文本并显示它。考虑到您已经做过的事情,代码不应该是困难的。

        3
  •  0
  •   helloandre    14 年前

    你不能只用一个通知插件吗?这里有两个( one ,请 two )那真是太时髦了。