Вызовите функцию setInterval в jQuery?
Я пытаюсь создать интервал вызова функции в jQuery, но он не работает! Мой первый вопрос: могу ли я объединить общий JavaScript с jQuery?
Должен ли я использовать setInterval("test()",1000);
или что-то вроде этого:
var refreshId = setInterval(function(){
code...
}, 5000);
Где я могу поместить функцию, которую я вызываю, и как мне активировать интервал? Разница в том, как объявить функцию в JavaScript по сравнению с jQuery?
Ответы
Ответ 1
Чтобы написать лучший код, вы должны "использовать" последний подход, используя ссылку на функцию:
var refreshId = setInterval(function() {}, 5000);
или
function test() {}
var refreshId = setInterval(test, 5000);
но ваш подход
function test() {}
var refreshId = setInterval("test()", 5000);
в основном также действителен (пока test()
является глобальным).
Обратите внимание, что нет такой вещи, как "в jQuery". Вы все еще пишете язык Javascript; вы просто используете некоторые готовые функции, которые являются библиотекой jQuery.
Ответ 2
Прежде всего: Да, вы можете смешивать jQuery с обычным JS:)
Лучший способ создать межповоротный вызов функции - использовать метод setTimeout:
Например, если у вас есть функция test() и вы хотите повторить все 5 секунд, вы можете создать ее следующим образом:
function test(){
console.log('test called');
setTimeout(test, 5000);
}
Наконец, вы должны вызвать функцию один раз:
$(document).ready(function(){
test();
});
Эта функция готового документа вызывается автоматически, после загрузки всего html.
Ответ 3
jQuery - это всего лишь набор помощников/библиотек, написанных в Javascript. Вы все равно можете использовать все функции Javascript, чтобы вы могли вызывать любые функции, также из внутренних обратных вызовов jQuery.
Поэтому обе возможности должны быть в порядке.