#javascript #jquery
#javascript #jquery
Вопрос:
Я не эксперт в jQuery или Javascript (я только начал с ним недавно), поэтому это может показаться глупым вопросом: у меня есть 4 вкладки, все из которых доступны для просмотра. Итак, я создал 2 функции, 1 для фактического выполнения по щелчку и одну только для «имитации» щелчка, чтобы я мог менять вкладки каждые 5 секунд. Что я сделал, так это установил для переменной bool «click» значение false, для которого устанавливается значение «true», если выполняется фактическая функция щелчка, поэтому автоматическое переключение вкладок прекращается. И ниже обеих этих функций я добавил цикл while, подобный этому:
var nr = 0;
while(!klik){
tabss.eq(st % 4).click().delay(5000); //this is the "simulation"
st ;
}
теперь он открывает первую вкладку, как и предполагалось, но через 5 секунд ничего не происходит. Есть предложения? Я хочу, чтобы это было похоже на слайд-шоу, которое останавливается, когда пользователи что-то нажимают.
Комментарии:
1. Должно
st
бытьnr
вместо этого? Кроме того, этот цикл while приведет к снижению производительности: вы задерживаете функцию щелчка на 5 секунд, но ваш вызовclick()
выполняется так быстро, как позволяет ваш процессор.2. Если вы используете вкладки пользовательского интерфейса jQuery, есть встроенное действие поворота, которое очень легко настроить.
Ответ №1:
.delay
используется только с анимацией jQuery. Что вам нужно использовать, так это setTimeout
или setInterval
:
var timer = setInterval(function() {
if (!klik) {
clearInterval(timer);
} else {
st %= 4;
clickontab($tabs.eq(st ));
}
}, 5000); // milliseconds
$('div.tab').click(function(e) {
e.preventDefault();
klik = false;
clickontab(this);
});
function clickontab(tab) {
// code to bring a particular tab to the front
}
Комментарии:
1. Я просто набирал почти идентичный ответ :-(. Я хотел бы добавить, что у Бена Алмана есть свой плагин jQuery doTimeout ( benalman.com/projects/jquery-dotimeout-plugin ), который может предложить больше возможностей и еще много чего.
2. Отлично, это работает с вращением, но оно не остановится. Когда я нажимаю вкладку, она все равно будет вращаться вперед. Но не беспокойтесь, возможно, что-то с моей стороны связано с установкой переменной ‘klik’
3. @GregaMenih В моем оригинальном jsfiddle
setInterval
запускает тот же обработчик кликов, который запускается при нажатии пользователем. Я обновил свой ответ модифицированным решением, чтобы учесть это.
Ответ №2:
я предлагаю этот метод :
var i = 0;
setInterval(openTab,4000);
function openTab(){
if(i>4) i=0;
tabss.eq(i).click();
i ;
}