扫码关注官方订阅号
Title 0 1 2 3 4
ringa_lee
这就涉及到js的闭包概念,你绑定事件的时候for循环已经走完了,如果你想点击哪个button加载对应数的button,应该使用闭包,将i值传进去。
msgs对象内输出的i是绑定事件之后的值,所以是5。想要跟按钮数字相同就用event.data.value呗
for循环在网页初始化的过程中就已经走完了,当执行点击事件是i的值已经是5
闭包。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="application/javascript" src="jquery.js"></script> </head> <body> <button> 0 </button> <button> 1 </button> <button> 2 </button> <button> 3 </button> <button> 4 </button> <p id="log"></p> <script> var logp = $("#log"); for (var i = 0; i < 5; i++) { (function(i) { $("button").eq(i).on("click", { value: i }, function(event) { var msgs = [ "button = " + $(this).index(), "event.data.value = " + event.data.value, "i = " + i ]; logp.append(msgs.join(", ") + "<br>"); }); })(i) } </script> </body> </html>
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这就涉及到js的闭包概念,你绑定事件的时候for循环已经走完了,如果你想点击哪个button加载对应数的button,应该使用闭包,将i值传进去。
msgs对象内输出的i是绑定事件之后的值,所以是5。想要跟按钮数字相同就用event.data.value呗
for循环在网页初始化的过程中就已经走完了,当执行点击事件是i的值已经是5
闭包。