2010-08-13 62 views
2

我有一個圖片幻燈片,它可以像下面這樣點擊按鈕:「>」。該按鈕是ID爲「slideshowRight」的跨度。在jQuery中設置計時器/ javascript

是否可以設置一個計時器,每5秒鐘逐字點擊幻燈片放映按鈕並在鼠標懸停在按鈕上時停止並在鼠標懸停在其上時重新啓動?

懸停停止不如每5秒鐘點擊一樣重要。我知道jQuery有一個.click()函數。

感謝, 阿米特

回答

0

它不應該被稱爲:這樣的事情應該點擊它曾經5秒slideshowLeft?哦,

如果你有一個按鈕,然後:

slideshowRight.click(function() { 
    // do some stuff 
}); 

,你可以實際腳本觸發按鈕的點擊:

,但我要說這將會是整潔簡單地重構功能:

slideshowRight.click(slideshowRight_click); 

function slideshowRight_click() { 
    // do some stuff 
} 

此基礎上,你可以間隔設置如下:

var isHover = false; 
setInterval(function() { 

    if(isHover) return; // do nothing! 

    slideshowRight_click(); 

}, 5000); // every 5 sec 

而且你可以改變的isHover像這樣的值:

slideshowRight.hover(function() { isHover = !isHover; }); 

哈弗將再次懸停在用戶停止徘徊按鈕調用,並再次,它的價值將被設置到現在還沒有的東西。

+0

哈哈你是完全正確的。那麼我打算寫「>」。我的錯。 – Amit 2010-08-13 12:37:21

1

檢查setTimeout and setinterval功能。當用戶將鼠標懸停在進出

setInterval(function(){ 
    $("myButton").click(); 
}, 5000); 

然後,您可以清除和啓動的時間間隔,使用上述和clearInterval功能

+0

我很喜歡你的方式,因爲我比大衛更容易理解它。然而,clearInterval()並不適合我,David的方式工作。對不起 – Amit 2010-08-13 12:47:48

+0

@Amit:clear-interval應該也可以。你必須做這樣的事情:'var slideshowInterval = null; function start(){slideshowInterval = window.setInterval(function(){myButton.click();},5000); } myButton.hover(function(){/ * on hover */window.clearInterval(slideshowInterval);},function(){/ * stop hover */start();}); start();' – 2010-08-13 13:53:49

+0

@Amit:實際上,這裏是兩個版本,並排,供您比較:http://jsbin.com/emuxa3/edit我不推薦調用'.click()' (或'trigger('click')')是你可能想要爲該按鈕的點擊監聽器分配一些其他代碼,做一些完全不同的事情,並且你可能不希望每隔5秒就調用一次。你想要幻燈片間隔改變圖片(或它做什麼)和*巧合*這是按鈕所做的相同的事情。如果按鈕的行爲發生了變化,那麼這並不意味着您的間隔應該是行爲。 – 2010-08-13 14:23:56