2

我不是 100% 确定问题标题是否准确,所以如果有人能准确解释我想要做什么,我愿意改变。

我有一个包含图像的 div,并为第一个图像下的每个“项目”复制,我想要做的是位置:当项目的第一个图像到达某个点时修复 div,到目前为止,我已经管理了它页面向右滚动。

这个怎么运作

它检查 div 的左侧位置是否与最初固定的 div 相对移动,然后如果它足够接近而不比 (fixedLeft+400) 更近,则类交换,原来被卡住的 div 继续前进,而新的 div 坚持下去。

它工作得很好,虽然没有经过全面测试,但我必须调试一下,但我正在尝试让它回到原路。

这是我的小提琴 - 大版本 = 图像可能太大http://fiddle.jshell.net/tara_irvine/d5VdF/12/show/

和代码http://jsfiddle.net/tara_irvine/d5VdF/12/的小提琴部分

该代码删除了很多内容,因为我的内容是动态的,并且所有内容(内容和副本)都基于隐藏的导航,因此可能会被忽略。

即使有人可以告诉我它应该如何工作的逻辑,这也会有所帮助。

我真的希望有人能提供帮助。非常感谢

4

1 回答 1

1

为每个 li 元素添加一个行为似乎是解决问题的一种奇怪方法。我宁愿最初将第一个副本容器设置为固定副本,然后$(window).scroll在其中有一个$(document).ready并跟踪它的偏移量。一旦达到某个阈值,就改变类。这也应该更容易逆转。

更新:这对我有用

$(document).ready(function(){
    $(window).scroll(function (){   
        var offset = $(".fixed-copy").offset().left;
        $(".fixed-copy").find(".offsetLeftGroupPrev").html(offset);     
        var next = $(".fixed-copy").parents("ul").next("ul.imgGroup").find(".copy-container");      
        var prev = $(".fixed-copy").parents("ul").prev("ul.imgGroup").find(".copy-container");  

        if(offset > next.offset().left){
            $(".fixed-copy").removeClass("fixed-copy");
            next.addClass("fixed-copy");
        }   

        if(prev!=null && prev.offset() != null){    
            if(offset < prev.offset().left){
                $(".fixed-copy").removeClass("fixed-copy");
                prev.addClass("fixed-copy");
            }
        }
   });  
});
于 2012-06-11T16:54:13.290 回答