我想在jQuery中動態地創建一個項目列表,並動態地將一個點擊處理程序綁定到每個處理程序,並且在創建點擊處理程序的同時範圍內的變量。在創建時綁定範圍變量的點擊處理程序?
下面的代碼創建1-6項的列表,但單擊處理似乎只與最後一個項目的值綁定 - 警報總是顯示6.
這是一個JavaScript範圍的問題嗎?如何將警報與1-6的變量綁定?
HTML:
<ul id="saved-list">
</ul>
JS:
var all_cookies = [1,2,3,4,5,6];
for (var i = 0; i < all_cookies.length; i++) {
var route_num = all_cookies[i];
var list_item = "<li><a href='#saved-route'>";
list_item += "<p>" + route_num + "</p></a></li>";
var newLi = $(list_item);
newLi.bind('click', function(){
alert(route_num);
});
$('#saved-list').append(newLi);
}
見的jsfiddle這裏:http://jsfiddle.net/n6FU5/
Ooooo。喜歡:)。我想出了這個解決方案:http://jsfiddle.net/n6FU5/2/,雖然不是很漂亮,但它有一個有趣的功能xD – Alxandr 2011-05-29 17:56:35
天才 - 謝謝。太好了! – phil123 2011-05-29 18:13:50
+1,很好的解決方案,但如果我不得不調試某人充滿像這樣的小提琴的代碼,我不會太高興。嵌套其中的一些,這是混淆你的代碼給你的合作開發者一些噩夢的有效方法。 :) – DarthJDG 2011-05-29 20:00:38