我正在尝试制作插件JSLint证明,并且正在努力解决以下错误消息:
Don't make functions within a loop.
抱怨这个片段:
for ( i = 0; i < pops.length; i++){
pops.eq(i)
.addClass('reverse out '+trans)
.hide('fast')
.removeClass('ui-panel-active')
.find(".ui-page-active")
.not("div:jqmData(show='first')")
.removeClass('ui-page-active').end()
.find(".ui-btn-active")
.removeClass('ui-btn-active').end()
.find('div:jqmData(external-page="true")')
.remove().end().end()
.delay(350)
// the problem
.queue(function(next){
$(this).removeClass('reverse out pop slide');
next();
});
...
}
我了解问题所在,但不知道如何使其符合JSlint标准。
问题:
如何让函数退出循环?
谢谢!
答案 0 :(得分:5)
我认为是时候拆分这个单行班。这太漫长了。
要将函数移出循环,请将函数从循环中移出:
function queue_callback(next) {
$(this).removeClass('reverse out pop slide');
next();
}
然后使用以下代码替换.queue()
回调中的匿名函数:
.queue(queue_callback)
答案 1 :(得分:3)
我能想到的最简单的方法是将函数声明为外部并将其作为参数传递:
var queue = function(next) {
$(this).removeClass('reverse out pop slide');
next();
};
...
.queue(queue)