任何人都有使用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}
} );
});
是否可以从外部var中精简这些属性,以便处理数组中的所有对象?
答案 0 :(得分:1)
您可以为迭代重用相同的输入obj的原因是,在内部,插件正在添加与单个实例相关的各种信息。 看一下这个例子:
检查控制台。你正在传递这个:
{"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/