这是一个常见难题的示例:如何使markup
在此.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++;
});
}
最佳答案
阅读docs,它已经有一个索引!
.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
在函数内部,因此每次迭代都会将其重置。您可能需要将其移出函数之外才能正常工作。