0

プラグインの 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 に準拠させる方法がわかりません。

質問:
関数をループから外すにはどうすればよいですか?

ありがとう!

4

2 に答える 2

5

このワンライナーを分割する時が来たと思います。むちゃくちゃ長いです。

関数をループの外に移動するには、文字通り関数をループの外に移動します。

function queue_callback(next) {
    $(this).removeClass('reverse out pop slide');
    next();
}

そして、.queue()コールバックの無名関数を次のように置き換えます。

.queue(queue_callback)
于 2012-10-28T22:59:00.953 に答える
3

私が考えることができる最も簡単な方法は、関数を外部で宣言し、パラメーターとして渡すことです。

var queue = function(next) {
  $(this).removeClass('reverse out pop slide');
  next();
};

...

.queue(queue)
于 2012-10-28T22:59:56.290 に答える