在jQuery中,我如何每5秒创建一次警报?

时间:2011-01-11 00:57:55

标签: javascript jquery

我可以使用jQuery执行此操作,还是应该使用其他内容?

4 个答案:

答案 0 :(得分:17)

jQuery.delay()函数旨在延迟jQuery队列中函数的执行。 已经有一个用于处理间隔功能的内置Javascript函数,你不会使用jQuery来实现它。

setInterval(function() {
    alert("Message to alert every 5 seconds");
}, 5000);

答案 1 :(得分:4)

同样,这里不需要jQuery:

setInterval(function() { 
   alert("How Now Brown Cow");
}, 5000);

(不要告诉任何人,但@Justin Niessner是对的,jQuery JavaScript)

答案 2 :(得分:2)

您可以使用setInterval()setTimeout()。也可能有一个jQuery特定的辅助函数。

setInterval()需要2个参数 - 一个执行函数,以及调用之间的毫秒延迟。在您更改或分页或致电clearInterval(intervalID)之前,它会一直调用该函数。您必须传递setInterval()返回的值才能清除它。

setTimeout()采用相同的参数,但只执行一次。您可以通过将传递给setTimeout()的函数中的最后一行再次调用setTimeout()来解决这个问题。

我注意到在某些浏览器中,您对使用setInterval()所做的操作受到限制 - 例如,它可能不允许您在页面加载时调用setInterval()

答案 3 :(得分:1)

我将这个脚本Cookbook/wait与一个小插件一起使用,效果非常好:

(function($){

   $.fn.runItIf = function(ex, fn, args) {

      var self = this;

      return $(self).queue(function() {

          args = args || [];
          if (ex)
             fn.apply.(self, args );

          $(self).dequeue();
      });
   };

   $.fn.runIt = function(fn, args) {

     return $(this).runItIf(true, fn, args);

   };

   $.fn.wait = function(time, type) {

        time = time || 1000;
        type = type || "fx";

        return this.queue(type, function() {
            var self = this;
            setTimeout(function() {
                $(self).dequeue();
            }, time);
        });
    };

})(jQuery); 

基于Cookbook/wait中的示例的示例:

   function runIt() {

      var expression = true;

      $("div").wait()
              .animate({left:'+=200'},2000)
              .runIt(function() { /* ... */ } ).wait(10)
              .runItIf(expression, function() { /* ... */ } ).wait(10)
              .animate({left:'-=200'},1500,runIt);
   }
   runIt();