2012-01-04 2 views
0

У меня есть ползунок, который скользит изображения через по нажатию кнопки с помощью следующей функцииАвтоматический слайдер с jquery?

$(document).ready(function(){ 
$('#button a').click(function(){ 
    var integer = $(this).attr('rel'); 
    $('#myslide .cover').animate({left:-720*(parseInt(integer)-1)}) 
    $('#button a').each(function(){ 
    $(this).removeClass('active'); 
     if($(this).hasClass('button'+integer)){ 
      $(this).addClass('active')} 
    }); 
}); 
}); 

Можно ли автоматизировать это с помощью JQuery?


Просто нашел это Oly не знаете, как я бы идти о реализации его ....

setInterval(function() { 
     // Do something every 2 seconds 
}, 2000); 
+0

, что вы имеете в виду автоматизировать? – elijah

+0

, поэтому, скажем, через 3 секунды он автоматически переходит на следующий слайд – Liam

+0

, что именно вы хотите автоматизировать здесь? –

ответ

2

Чтобы анимировать изображения после нажатия на кнопку, вы можете использовать setInterval. Мой предыдущий пример использовал setTimeout, даже после того, как вы упомянули setInterval. Упс. Это должно быть намного чище.

В комментариях следует описать, что происходит.

Обратите внимание, что setInterval вызывается при нажатии кнопки. Каждый раз, когда вы нажимаете кнопку, он запустит еще один экземпляр. Исправление для этого сводится к логике кодирования, которую вы хотите использовать. Попробуйте использовать clearInterval(), если вы должны установить это так, чтобы его можно было вызвать несколько раз.

$(function() { 
    //Click our link 
    $("a").click(function() { 
     animateOurImage(); 
     setInterval(function() { animateOurImage(); }, 3000); 
     //Be sure you account for the animation's duration in setInterval. 
    }); 
}); 

function animateOurImage() { 
    // We need the .each to access the image with $(this) 
    $('.image').animate({ 
     left: "-=120" //relative to current position 
    }, 1000); //Duration 
} 

Вот пример скрипку: http://jsfiddle.net/Yjhwm/

+0

Обратите внимание, что если анимация нескольких изображений .cover анимации, это запустит много таймеров. Вы можете либо установить переменную * вне * области .animate(), либо сразу clearTimeout (variable), за которой следует переменная = setTimeout(). Это будет делать только один тайм-аут одновременно. В качестве альтернативы просто вызовите setTimeout вне функции. –

+0

это, похоже, не эмулирует кнопку по какой-либо причине – Liam

+0

Попробуйте мои изменения, имейте в виду, что может быть более практично полностью перемещать анимацию в новую функцию и просто вызвать анимацию и setTimeout в событии клика. clearTimeout() setTimeout(), вероятно, не самый чистый способ делать вещи. –

2

первым, сделать функцию, которая выполняет анимацию в функции первого класса (то есть, дать ему имя и переместить его из клик()):

function animate() {...} 

затем связать обработчик щелчка с этим:

$('#button a').click(animate); 

затем использовать setInterval() или SetTimeout(), чтобы выполнить эту функцию по истечении заданного времени ожидания:

setTimeout(animate, 3000); 
Смежные вопросы