0

到目前为止,这是我的代码,

  function richardsSuperAmazingVerticalTextScroller(){


        $('#honor-roll ul').animate(
        { 
            top: '-=' + $('#honor-roll ul li:last').height()
        },
        1000,
        'linear',
        function(){
            var offset = $('#honor-roll ul li:last').offset().top;                
            console.log(offset);
            if( offset <= 640){
                 $('#honor-roll ul li').css("margin", 0);
                 $('#honor-roll ul li:last').after($('#honor-roll ul li:first').detach());
            }
        }
    );
    }
    $(document).ready(function(){
        setInterval('richardsSuperAmazingVerticalTextScroller()',1000)
    });

在 jsFiddle 上它工作得很好,但在这个版本中它失败了,http: //barkins.com/test.html

这是 Fiddle 上的相同代码,http://jsfiddle.net/qmFD3/6/

谁能发现问题?谢谢

4

3 回答 3

2

因此,它不是相同的代码。特别是,你的 jsFiddle 有

if( offset <= 640){
    $('#honor-roll ul').css("top", 0);
    $('#honor-roll ul li:last').after($('#honor-roll ul li:first').detach());
}

虽然您网站上的代码有

if( offset <= 640){
    $('#honor-roll ul li').css("margin", 0);
    $('#honor-roll ul li:last').after($('#honor-roll ul li:first').detach());
}

改变它可以解决问题。

作为旁注,您不应该在setTimeout. 您可以将其更改为:

setInterval(richardsSuperAmazingVerticalTextScroller,1000)
于 2013-04-24T14:56:41.710 回答
1

你需要改变:

$('#honor-roll ul li').css("top", 0);

至:

$('#honor-roll ul').css("top", 0); // Note the li

以及将所有 jQuery 代码包装在里面$(document).ready(function() { });

$(document).ready(function(){
    $('#honor-roll ul').css({display:"none"});
    $('#honor-roll ul').fadeIn('slow');
    setInterval(richardsSuperAmazingVerticalTextScroller,1000)
});

编辑:

我想我知道你的代码不起作用的原因,这是因为你的 jQuery 版本

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" type="text/javascript"></script>

这是与您的网站存在完全相同问题的FIDDLE

所以你只需要在你的网站上使用另一个 jQuery 版本,它应该可以工作。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
于 2013-04-24T15:12:44.957 回答
0

也许这一切都是为了把

 <script>

身体元素内部

于 2013-04-24T14:56:58.793 回答