我熟悉JavaScript闭包。多年前,当我在自己的项目中工作时发现了关闭问题。在面试候选人时,我还加入了著名的“ for-loop-button”问题。
现在,我用jQuery问了这个问题。而且,我一生无法解决问题。
item.ItemTitleWithQtyPrice = item.ItemTitle + " Quantity " + it.Quantity + " Total Price: ₹ " + item.Total;
有人知道如何在约束范围内在此处创建必要的闭包吗?
我尝试将匿名函数包装在括号中,返回内部函数,等等。
https://jsfiddle.net/hmw0gk4c/791/
谢谢。
答案 0 :(得分:0)
这将是你的追求吗?
$(document).ready( function() {
var buttons = $('button');
for( var i = 0; i < buttons.length; ++i ) {
buttons.eq(i).click(
// ONLY EDIT THE CODE BELOW THIS LINE
return (function() {
$('ul').append('<li>' + i + '</li>')
})();
// ONLY EDIT THE CODE ABOVE THIS LINE
);
}
});
答案 1 :(得分:0)
这可以解决问题:
$(document).ready( function() {
var buttons = $('button');
for( var i = 0; i < buttons.length; ++i ) {
buttons.eq(i).click(
// ONLY EDIT THE CODE BELOW THIS LINE
function() {
var i2 = i + 1;
return function() {
$('ul').append('<li>' + i2 + '</li>');
}
}()
// ONLY EDIT THE CODE ABOVE THIS LINE
);
}
});
答案 2 :(得分:0)
这对我有用:
$(document).ready( function() {
var buttons = $('button');
for( var i = 0; i < buttons.length; ++i ) {
buttons.eq(i).click(
// ONLY EDIT THE CODE BELOW THIS LINE
(function(y) {
return (function() {
$('ul').append('<li>' + y + '</li>')
});
})(i)
// ONLY EDIT THE CODE ABOVE THIS LINE
);
}
});