以下示例頁面會根據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