使用jQuery进行多个实例定位和性能

时间:2015-08-22 17:05:10

标签: javascript jquery

jQuery插件通过使用类名而不是ID提供了一种多目标定位方法。

例如(这是Flexslider的一个例子,但它可以是任何jQuery插件):

$('.classname').flexslider();

然而,在某些情况下,这不是一种灵活的方法。为了使用特定滑块的不同选项,我使用jQuery each()方法:

$('.classname').each(function() { 
    $(this).flexslider();
});

第二个选项允许使用元素的“data”属性,它非常有助于覆盖全局滑块值或修改特定实例。

这两种方法都很完美,但我的问题是在这种情况下使用each()方法是否可以?因为据我所知,每个()方法等待显示,并且每个()循环完成后将触发其余代码。它会影响性能吗?

编辑:示例配置(原始配置更复杂,但我想这个可以提供这个想法):

 $('.flexslider').each(function() { 

          tgallery = 0;

          if($(this).data('shortcode')=='gallery') {
                tgallery = 1;           
          }

          var animation = $(this).data('animation');

          $(this).fitVids().flexslider({
                animation : animation,
                pauseText: '<i class="fa fa-pause"></i>',
                playText: '<i class="fa fa-play"></i>', 
                prevText: '<i class="useicon"><</i>',
                nextText: '<i class="useicon">></i>', 
                start: function(slider){
                    if(tgallery) {
                        sliderAlign(slider); 
                    }       
                }
           });

    });

1 个答案:

答案 0 :(得分:0)

无论何时将jQuery方法链接到选择器,jQuery都会在内部执行each循环。

因此,创建自己的each应该对性能影响非常小。这种影响应该是难以察觉的,而不是一个问题

内部each循环只会在集合中有一个要循环的元素。

当需要将元素特定数据传递给插件选项时,您使用的模式很常见