我想要使用jquery點擊一個元素時,相對於當前位置滾動div。但它必須在3000毫秒後滾動,所以試圖延遲它。現在它在點擊後立即相對於頂部滾動300px。如果我再次點擊什麼都沒有發生。相對於當前位置滾動Jquery
這是迄今爲止代碼:
$('#scroll').click(function(){
$('.vluchtelinginfo').delay(3000).scrollTop(+300);
});
感謝您的幫助。
我想要使用jquery點擊一個元素時,相對於當前位置滾動div。但它必須在3000毫秒後滾動,所以試圖延遲它。現在它在點擊後立即相對於頂部滾動300px。如果我再次點擊什麼都沒有發生。相對於當前位置滾動Jquery
這是迄今爲止代碼:
$('#scroll').click(function(){
$('.vluchtelinginfo').delay(3000).scrollTop(+300);
});
感謝您的幫助。
這不是如何delay()
的作品。
在你的情況下,使用
setTimeout(function() {
$('.vluchtelinginfo').scrollTop(+300);
});
%的文檔在隊列中delay()
只有後續事件都被延遲;例如,這將 不延遲.show()或.hide()的無參數形式,其中 不使用效果隊列。
你可以嘗試這樣的事情......
$("#scroll").click(function() {
setTimeout(function() {
$(".vluchtelinginfo").css("top", $(".vluchtelinginfo").offset().top + 300);
}, 3000);
});
這不起作用。謝謝你的幫助 – luukgruijs
布拉德·M的有關使用setTimeout
建議是得到你想要的東西的一種方式。 scrollTop()
未在jQuery提供的「效果」中列出,因此delay()
將不會受到影響,因爲delay()
僅影響效果。
但是,可以使用animate()
盡出滾動的效果,例如以下爲動畫滾動:
$scrollable.animate({scrollTop: x});
由於animate()
是一個「效果」,它應該由delay()
影響。所以,你可以這樣做:
$scrollable.delay(3000).animate({scrollTop: x});
但是,你遇到了另一個問題:當scrollTop(x)
被稱爲x
是絕對值,不是相對一個。撥打scrollTop(+300)
與撥打scrollTop(300)
完全相同。在這種情況下,+
符號沒有特殊含義。如果你希望你的滾動是相對的,那麼你需要先獲得前一個scrollTop值,並添加你想要滾動的相對距離。例如,
$scrollable.delay(3000).animate({scrollTop: $scrollable.scrollTop() + 300});
這fiddle把上述原則工作。
謝謝,這幫助我。你也對滾動事物有一個想法嗎? – luukgruijs
我現在的代碼是:$('#scroll')。單擊(函數(){\t \t \t變種延遲= 3000; \t \t \t \t \t \t \t的setTimeout(函數(){ \t \t \t \t \t $()scrollTop的(300) 'vluchtelinginfo。'; \t \t \t \t},延遲); \t \t \t}); – luukgruijs