2015-10-05 82 views
2

我有一個很好的看看,我在這裏有一個真正的困難與一些jQuery,我只能找到解決方案添加一個類時滾動,但只有通過一個div某個數字像素數。jQuery addClass滾動'在'一個div

這裏是我的問題http://jsfiddle.net/sqz75b9g/

的的jsfiddle在jQuery的也將被複制。現在這個功能在用戶向下滾動500個像素的目的下效果很好。但是我希望addClass在用戶達到.content div,時發生而不僅僅是像素高度

任何意見將不勝感激。非常感謝你。

$(function() { 
    var header = $('header'); 
    var menu = $('#menu'); 
    $(window).scroll(function() { 
     var scroll = $(window).scrollTop(); 

     if (scroll >= 500) { 
      header.addClass('dark'); 
      menu.addClass('dark'); 
     } else { 
      header.removeClass('dark'); 
      menu.removeClass('dark'); 
     } 
    }); 
}) 

回答

4

您可以使用下面的代碼:

var hieghtThreshold = $(".content").offset().top; 

小提琴鏈接:http://jsfiddle.net/sqz75b9g/6/

$(function() { 
var header = $('header'); 
var menu = $('#menu'); 
var hieghtThreshold = $(".content").offset().top; 
var hieghtThreshold_end = $(".content").offset().top +$(".content").height() ; 
$(window).scroll(function() { 
    var scroll = $(window).scrollTop(); 

    if (scroll >= hieghtThreshold && scroll <= hieghtThreshold_end) { 
     header.addClass('dark'); 
     menu.addClass('dark'); 
    } else { 
     header.removeClass('dark'); 
     menu.removeClass('dark'); 
    } 
}); 

})

+0

這很好,謝謝你,我假設我的'其他'的代碼是錯誤的,它將如何工作,它將removeClass通過.content – HeyImArt

+0

後更新了答案。 – vijayP

0

在這種情況下,你需要使用.offset().top

$(function() { 
    var header = $('header'); 
    var menu = $('#menu'); 
    $(window).scroll(function() { 
    var scroll = $(window).scrollTop(); 

    if (scroll >= $('.content').offset().top) { // check the offset top 
     header.addClass('dark'); 
     menu.addClass('dark'); 
    } else if(scroll >= $('.content').offset().top+$('.content').height()){ // check the scrollHeight 
     header.removeClass('dark'); 
     menu.removeClass('dark'); 
    } 
    }); 
}); 

if (scroll >= $('.content').offset().top) {檢查特定元素是在視圖中。

} else if(scroll >= $('.content').offset().top+$('.content').height()){這將檢查元素是否從視圖傳遞。

+0

This w奧克斯太棒了!簡直不能相信這是如何工作的,我猜在我的代碼中的最後一件事是錯的,就是else {一旦它超越.content,它不會刪除類。 – HeyImArt

+0

感謝您的回答。完成它,所以我可以給你+1 – ncm

+0

@HeyImArt爲此,我想你需要檢查'offset()。top + height'。 – Jai

0

可以使用偏移()方法來知道哪裏是你的元素:

var header = $('header'); 
var menu = $('#menu'); 
$(window).scroll(function() { 
    var scroll = $('.element').offset().top; // look at this 

    if (scroll >= 500) { 
     header.addClass('dark'); 
     menu.addClass('dark'); 
    } else { 
     header.removeClass('dark'); 
     menu.removeClass('dark'); 
    } 
});