如何从循环中删除一个函数,使其与JSLint兼容?

时间:2012-10-28 22:54:38

标签: javascript loops jslint

我正在尝试制作插件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标准。

问题:
如何让函数退出循环?

谢谢!

2 个答案:

答案 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)