2012-01-18 93 views
0

我有一个按日期排序的项目列表,我希望日期在用户滚动浏览元素时保持固定,以便用户始终知道元素的日期。jquery - 当元素滚动页面顶部时,动态更改元素值

我的HTML看起来像这样:

<div class="event_date">Jan 1, 2012</div> 
<div> stuff here </div> 
<div> stuff here </div> 
<div class="event_date">Jan 2, 2012</div> 
<div> stuff here </div> 
<div> stuff here </div> 
<div class="event_date">Jan 3, 2012</div> 
<div> stuff here </div> 
... 

我已经有一个固定的股利框不动时,页面上的用户滚动

<div id="current_date_box"></div> 

我目前的JavaScript看起来像这样:

$(window).scroll(function(){ 
    if ($(".event_date").offset().top < $(window).scrollTop()) { 
     //the code only affects the first element with class event_date 
     var selected_date = $(".event_date).html(); 
     $("#current_date_box").html(selected_date); 
    } 
}); 

滚动工作正常,我可以得到的数据来改变滚动然而,问题在于,因为我使用的是类选择器,它总是只从类列表中选择第一个元素。我不知道如何让它与页面上的每个类元素一起工作,并且我不能给它们每个唯一的ID,因为假设它可能是无限量,因为它是从日历数据库中提取的,而这只是不实际,我认为。

我也试图让它与eq [我]等工作,我也无法弄清楚。我也尝试过使用$(this)的各种方法,但也许我错误地实现了它。

我想我要做沿着

$(".event_date").offset().change() do something 

但东西线偏移()变化()不支持。

任何帮助,将不胜感激!

回答

0

类选择器应返回所有匹配元素的集合。但你必须把它包装在每个功能中,我认为...

$(window).scroll(function(){ 
    $window = $(window); 

    $(".event_date").each(function() { 
    var $this = $(this); 
    if($this.offset().top < $window.scrollTop()) { 
     $("#current_date_box").html($this.html()); 
    } 
    }); 
});