jQuery Image Slider - 性能问题

时间:2010-10-26 15:07:46

标签: javascript jquery performance

我目前正在构建一个简单的“jQuery Image Slider”,但它不能像我希望的那样工作。这是令人难以置信的缓慢和无反应,最后一张图片没有做任何事情。

网址:http://fusionmedia.dk/jquery/

有什么问题?

提前致谢

2 个答案:

答案 0 :(得分:1)

指定更快的速度。它的默认速度较慢。

$('#gallery').delegate('img', 'mouseover', function() {

                $this = $(this);

                for(var i = 0; i <= $this.siblings().size(); i++) {

                    if($this.index() > i) {

                        $this.siblings().eq(i).stop().animate({ left: (i * 50) + 'px' }, 300);

                    } else {

                        $this.siblings().eq(i).stop().animate({ left: ((i * 50) + 500) + 'px' }, 300);

                    }

                }

            });

编辑:

你有2个非常糟糕的速度问题。

1:每次悬停时,你都在运行一个耗时的循环。

2:你多次调用$ this.siblings()。缓存那个。

以下是如何更好地实现其中一些的示例,我仍然让您在悬停事件中循环,您应该尝试将其移出。

$(function(){

         $('#gallery').find('img').each(function(){

            $this = $(this);
            $this.css('left', $this.index() * 50 + 'px');

         });

         $('#gallery').delegate('img', 'mouseover', function(){

            $this = $(this);
            var $sibs = $this.siblings();
            for (var i = 0; i <= $sibs.size(); i++) {

               if ($this.index() > i) {

                  $sibs.eq(i).stop().animate({
                     left: (i * 50) + 'px'
                  });

               } else {

                  $sibs.eq(i).stop().animate({
                     left: ((i * 50) + 500) + 'px'
                  });
               }
            }
         });
      });

答案 1 :(得分:0)

它取决于各种各样的事情,你是在前面加载所有图像,甚至图像的大小都很重要。

所有后续请求都应缓存在浏览器中。

如果可能的话,你应该使用一些缓存机制。