Fonction d'appel avec setInterval en jQuery?

j'essaie de créer un appel d'intervalle à une fonction en jQuery, mais ça ne marche pas! Ma première question Est, puis-je mélanger JavaScript commun avec jQuery?

devrais-je utiliser setInterval("test()",1000); ou quelque chose comme ceci:

var refreshId = setInterval(function(){
    code...
}, 5000);

où mettre la fonction que j'appelle et comment activer l'intervalle? Est-ce une différence dans la façon de déclarer une fonction en JavaScript par rapport à jQuery?

25
demandé sur Felix Kling 2011-03-30 13:00:25

4 réponses

Pour écrire le code, vous "doit" utiliser la dernière approche, avec une fonction de référence:

var refreshId = setInterval(function() {}, 5000);

ou

function test() {}
var refreshId = setInterval(test, 5000);

mais votre approche de

function test() {}
var refreshId = setInterval("test()", 5000);

est fondamentalement valide ,aussi (aussi longtemps que test() est global).

notez Qu'il n'y a pas de "en jQuery". Vous écrivez encore le langage Javascript; vous utilisez juste quelques fonctions pré-faites qui sont la bibliothèque jQuery.

47
répondu Lightness Races in Orbit 2011-03-30 09:06:28

tout D'abord: Oui vous pouvez mélanger jQuery avec JS commun:)

la meilleure façon de construire un appel intervall d'une fonction est d'utiliser la méthode setTimeout:

par exemple, si vous avez une fonction appelée test () et que vous voulez la répéter toutes les 5 secondes, vous pouvez la construire comme ceci:

function test(){
    console.log('test called');
    setTimeout(test, 5000);
}

enfin vous devez déclencher la fonction une fois:

$(document).ready(function(){
    test();
});

cette fonction est appelée automatiquement, après que tout le html est chargé.

6
répondu ayk 2011-03-31 08:03:00

jQuery est juste un ensemble d'helpers/libraries écrit en Javascript. Vous pouvez toujours utiliser toutes les fonctionnalités Javascript, de sorte que vous pouvez appeler n'importe quelles fonctions, aussi à partir de l'intérieur des callbacks jQuery. Donc les deux possibilités devraient aller.

0
répondu jm_toball 2011-03-30 09:04:17

setInterval (function () { updatechat(); }, 2000);

function updatechat () {alert ('hello world');}

0
répondu vidur punj 2018-08-07 06:09:22