2

任何人都有使用 niceScroll 的经验...我正在尝试优化将滚动条分配给它们各自的元素并附加它们的属性的代码。这仅适用于数组中存在的第一个对象 ($ele1):

var obj = {
  cursorwidth: 6,
  railoffset: {top:0,left:20}
};

var eleArray = [$ele1, $ele2];

$(eleArray).each(function() {

   $(this).niceScroll( obj );

});

但这对于数组中的所有对象都可以:

var eleArray = [$ele1, $ele2];

$(eleArray).each(function() {

  $(this).niceScroll( {
     cursorwidth: 6,
     railoffset: {top:0,left:20}
  } );

});

有什么方法可以从处理数组中所有对象的外部变量中简化这些属性?

4

1 回答 1

1

您可以为迭代重用相同的输入 obj 的原因是,在内部,插件正在添加与单个实例相关的各种信息。看看这个例子:

http://jsfiddle.net/46TLb/

检查控制台。你正在传递这个:

{"cursorwidth":6,"railoffset":{"top":0,"left":20}}

它添加并转换为类似的东西:

{"cursorwidth":6,"railoffset":{"top":0,"left":20},"doc":{"0":{"jQuery110107344591654536623":7},"context":{"jQuery110107344591654536623":7},"length":1}}

所以答案是:你不能重用传递参数的同一个实例给 niceScroll 函数,因为它为了自己的方便而改变它。而且,真的,这不是一个很好的优化。如果需要优化,可以尝试用内置的 javascript for 循环替换 jquery 各个函数:

var eleArray = [$ele1, $ele2];

for (var i = 0; i < eleArray.length; ++i) {

  eleArray[i].niceScroll( {
     cursorwidth: 6,
     railoffset: {top:0,left:20}
  } );

}

阅读本文以获取有关使用 jquery 进行优化的更多信息:http: //net.tutsplus.com/tutorials/javascript-ajax/10-ways-to-instantly-increase-your-jquery-performance/

于 2013-12-05T23:29:30.763 回答