4

これは、よくあるジレンマの例markupです.each()

この特定の問題よりも、クロージャー内から外部変数にアクセスする方法を学ぶことに興味があります。each 関数内から割り当てることでこの問題を解決できますmarkupが、この種の問題を処理するためのよりエレガントな方法を学びたいと思います。

// hide form & display markup
function assessmentResults(){

  // get assessment responses
  var markup = parseForm();

  // show assessment results to user
  $('#cps-assess-form fieldset').each( function() {
    var q = $(this).find('.fieldset-wrapper');
    var i = 0;

    // hide form questions
    q.slideUp();

    // insert markup
    $('<div>'+markup[i]+'</div>').insertAfter(q);
    i++;
  });

}
4

1 に答える 1

5

ドキュメントを読んでください、それはすでにインデックスを持っています!

.each( function(index, Element) )

の必要はありませんi

$('#cps-assess-form fieldset').each( function(index) {
    var q = $(this).find('.fieldset-wrapper').slideUp();
    $('<div/>').html(markup[index]).insertAfter(q);
});

失敗する理由はi、関数の内部にあるため、反復ごとにリセットされます。それを機能させるには、関数の外に移動する必要があります。

于 2013-03-07T22:01:31.567 に答える