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);
}
}
});
});
答案 0 :(得分:0)
无论何时将jQuery方法链接到选择器,jQuery都会在内部执行each
循环。
因此,创建自己的each
应该对性能影响非常小。这种影响应该是难以察觉的,而不是一个问题
内部each
循环只会在集合中有一个要循环的元素。
当需要将元素特定数据传递给插件选项时,您使用的模式很常见