.click() 回调引用调用方法中的局部变量,而不是按值复制
以下 jQuery Javascript 代码包含在一个空页面上。
var element;
$(function() {
for (var i = 0; i < 10; i++) {
element = $('<div>' + i + '</div>');
element.click(function() {
alert(i);
});
$('body').append(element);
}
});
期望的行为是,此代码应生成 10 个 div 元素,编号从 0 到 9。当您单击 div 元素时,警报弹出窗口将显示您单击的 div 元素的编号(即,如果用户单击 div 元素标记为“4”,警报弹出窗口应显示数字 4)。
无论单击哪个 div 元素,警报弹出窗口都会显示数字 10。
我如何修改此代码以使其按所需方式运行?
The following jQuery Javascript code is included on an otherwise empty page.
var element;
$(function() {
for (var i = 0; i < 10; i++) {
element = $('<div>' + i + '</div>');
element.click(function() {
alert(i);
});
$('body').append(element);
}
});
The desired behavior is that this code should generate 10 div elements numbered from 0 to 9. When you click on a div element, an alert popup will show the number of the div element you clicked on (i.e. if a user clicks on the div element labeled '4', the alert popup should show the number 4).
The alert popup instead shows the number 10 regardless of which div element is clicked on.
How can I modify this code to make it behave in the desired way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要将变量作为函数参数传递。
例如:
您还可以使用内联匿名函数来执行此操作,如下所示:
You need to pass the variable as a function parameter.
For example:
You can also do this with an inline anonymous function, like this:
通常我将数字隐藏在 id 中并以某种结构化方式将其取出:
Usually I hide the number in an id and get it out in some structured way:
您可以做两件事中的一件。您可以使用 div 的内容来输出 is,或者您可以从选择器中获取数组中的索引。
这是内容的示例:
或索引的示例:
我相信两者都应该有效
You could do 1 of two things. You could use the contents of the div to output is or you could grab the index in the array from a selector.
This is an example for contents:
Or for the index:
I believe both should work