3
似乎它只是我的話)'惰性滾動'是否存在?
有沒有辦法在一段時間後執行一個函數?
我想寫一個先進scrollspy腳本我的網站,我一直在想的是執行不立即但一段時間後onScroll行動。如果用戶滾動快,許多停,我想scrollspy只在停止刷新導航鏈接,如果用戶滾動緩慢(也許不停止)我想scrollspy刷新導航鏈接每0.6秒例如。
不幸的是,我不知道從哪裏開始。
我想升級此代碼:
var lastId,
topMenu = jQuery(".a1-nav"),
topMenuHeight = document.querySelector('header .top-header').offsetHeight;
menuItems = topMenu.find("a"),
scrollItems = menuItems.map(function(){
var item = jQuery(jQuery(this).attr("href"));
if (item.length) { return item; }
});
menuItems.click(function(e){
var href = jQuery(this).attr("href"),
offsetTop = href === "#" ? 0 : jQuery(href).offset().top-topMenuHeight+1;
jQuery('html, body').stop().animate({
scrollTop: offsetTop
}, 300);
e.preventDefault();
});
jQuery(window).scroll(function(){
var fromTop = jQuery(this).scrollTop()+topMenuHeight;
var cur = scrollItems.map(function(){
if (jQuery(this).offset().top < fromTop)
return this;
});
cur = cur[cur.length-1];
var id = cur && cur.length ? cur[0].id : "";
if (lastId !== id) {
lastId = id;
// Set/remove active class
console.log(id);
menuItems
.removeClass("active")
.filter("[href=#"+id+"]").addClass("active");
}
});
聽起來像是你想有一個去抖插件或一些修改後的版本。 – Timmerz 2015-02-10 00:52:26