dou*_*ack 4 javascript jquery closures scope
这是一个常见的两难困境的例子:如何在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++;
});
}
Run Code Online (Sandbox Code Playgroud)
阅读文档,它已经有一个索引!
.each( function(index, Element) )
Run Code Online (Sandbox Code Playgroud)
没必要 i
$('#cps-assess-form fieldset').each( function(index) {
var q = $(this).find('.fieldset-wrapper').slideUp();
$('<div/>').html(markup[index]).insertAfter(q);
});
Run Code Online (Sandbox Code Playgroud)
您失败的原因是i函数内部因此每次迭代都会重置.您需要将其移出函数以使其工作.