以下示例页面会根据foo
对象附加三个<button>
标记,并且在单击时,我期望它们输出foo
中的值。例如,点击ID为btn1
的按钮,我希望得到输出Title:baz, ID:7198
。但是,每个按钮按下输出Title:whizbang, ID:7119
。将事件处理程序添加到动态添加的元素
我相信罪魁祸首是在按钮事件处理程序($("#btn" + i).click(function()
),但我不知道。我已经通过它并点击了,无论按下哪个按钮,i
的值都是2。
我该如何完成我正在寻找的行为? jQuery不是必需的,但我碰巧使用的是。
<html>
<head>
<script type='text/javascript'>
var foo = {
"foo": [
{
"title":"bar",
"id":7826
},
{
"title":"baz",
"id":7198
},
{
"title":"whizbang",
"id":7119
}
]
};
</script>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.11.1.min.js'></script>
<script type='text/javascript'>
$(document).ready(function() {
for (i in foo.foo) {
$("#content").append("<button type='button' id='btn" + i + "'>" + foo.foo[i].title + "</button>");
$("#btn" + i).click(function() {
$("#result").append("<p>Title:" + foo.foo[i].title + ", ID:" + foo.foo[i].id + "</p>");
});
}
});
</script>
</head>
<body>
<div id='content' />
<div id='result' />
</body>
</html>
为什么不向他们添加一个类并编写一个类选择器的事件 –
您不应该使用in循环遍历数组。使用forEach方法或循环的条件增量。 – SimpleJ
@SimpleJ感谢关于'forEach'的提示,它完全符合我的需求,如果你想写一个简单的答案,我会接受它 – jdphenix