我工作在頁面上有一個固定的菜單,用戶之後拿起滾動了從頂部一定距離,當他們向下滾動頁面,從菜單中選擇不同的鏈接中給出一個改變顏色的類。所有這些在Chrome和Safari中似乎都能很好地工作,但在Firefox中,頁面在頂部凍結。我想知道它是否不斷循環一些代碼......實質上是凍結了窗口。window.scroll功能凍結火狐
這是我的代碼。
$.localScroll({
onBefore: function() {
$('body').data('scroll-executing', true);
},
onAfter: function() {
$('body').data('scroll-executing', false);
$(window).trigger("scroll");
}
});
$(window).scroll(function() {
if ($(this).scrollTop() > 259) {
$('.nav').addClass("f-nav");
} else {
$('.nav').removeClass("f-nav");
}
});
$(window).scroll(function() {
if ($('body').data('scroll-executing')) {
return;
}
// find the a with class 'active' and remove it
$("a").removeClass('active');
// get the amount the window has scrolled
var scroll = $(window).scrollTop();
// add the 'active' class to the correct #nav based on the scroll amount
if (scroll > 2150) {
$("#nav_3").removeClass('active');
$("#nav_5").attr('class', 'active');
setHash("contact");
} else if (scroll > 1300) {
$("#nav_2").removeClass('active');
$("#nav_3").attr('class', 'active');
setHash("portfolio");
} else if (scroll > 400) {
$("#nav_2").attr('class', 'active');
setHash("about");
} else if (scroll <= 380) { //when I remove this section, the problem goes away.
$("#nav_1").attr('class', 'active');
setHash("home");
}
});
我忘了添加setHash定義。這裏是。
setHash = function(hash) {
var scrollmem = $('body').scrollTop();
window.location.hash = hash;
$('html,body').scrollTop(scrollmem);
}
我也注意到CPU上升到100%,我似乎無法弄清楚爲什麼。
的問題是在代碼與其他開始第三部分,如果(滾動< = 380)。我想通過消除的過程。任何人都可以看到它循環或做一些永遠不會結束的事情......或者可以解釋爲什麼firefox會在頁面頂部凍結?
我是新來的這一切......我剛拿起的jQuery在過去的幾天裏,我已經基本google搜索了很多,適應代碼,以便它適合我的需要。
任何幫助將不勝感激。
你能給出一個鏈接到一個示例頁面,顯示問題,也許在jsfiddle.net或類似的東西? –