2011-01-11 11 views
3

Kann ich dies mit jQuery machen oder sollte ich etwas anderes verwenden?In jQuery wie erstelle ich alle 5 Sekunden einen Alarm?

+0

Kurze Antwort: Das gleiche wie in JavaScript;) (Es gibt keine spezielle jQuery-Funktionalität dafür). –

+4

Keine Notwendigkeit für jQuery. Plain old 'setInterval()' macht –

+1

möglich duplicate von [setInterval vs setTimeout] (http://stackoverflow.com/questions/2696692/setinterval-vs-settimeout) – treeface

Antwort

16

Die jQuery.delay() Funktion ausgelegt ist, zu verzögern Ausführung von Funktionen in der jQuery-Queue. Es gibt bereits eine integrierte JavaScript-Funktion für die Verarbeitung von Intervallfunktionen. Sie würden jQuery nicht verwenden, um dies zu erreichen.

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

Wieder keine Notwendigkeit für jQuery hier:

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

(Sie jemand nicht sagen, aber @Justin Niessner ist richtig, jQuery ist JavaScript)

+2

Ich kichere jedes Mal, wenn ich Leute sehe, die sich auf JS als jQuery beziehen –

+2

Technisch gesehen können Sie in Vanilla JavaScript alles tun, dass Sie jQuery seit jQuery IS JavaScript verwenden würden. –

+0

Ich stimme zu, jQuery ist wirklich das beste, es löst alle Arten von Browserproblemen und ist auch gut – goat

2

Sie können entweder setInterval() oder setTimeout() verwenden. Es kann auch eine jQuery-spezifische Hilfsfunktion geben.

setInterval() benötigt 2 Parameter - eine auszuführende Funktion und die Verzögerung in Millisekunden zwischen Aufrufen. Es wird weiterhin die Funktion aufrufen, bis Sie die Seiten wechseln oder clearInterval(intervalID) aufrufen. Sie müssen den von setInterval() zurückgegebenen Wert übergeben, um es zu löschen.

setTimeout() nimmt die gleichen Parameter, aber es wird nur einmal ausgeführt. Sie können das umgehen, indem Sie die letzte Zeile in der Funktion, die Sie übergeben, erneut an setTimeout()setTimeout() senden.

Ich habe festgestellt, dass Sie in einigen Browsern eingeschränkt sind in dem, was Sie mit setInterval() tun können - zum Beispiel könnte es Sie setInterval() beim Laden der Seite möglicherweise nicht aufrufen.

1

Ich benutze dieses Skript Cookbook/wait mit einem kleinen Plugin und es funktioniert ziemlich gut:

(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); 

Beispiel basierend auf dem Beispiel in 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(); 
Verwandte Themen