2013-04-08 98 views
0

我动态生成一系列onclick事件,其中alert()与假装内容的循环数相关联。我的问题是,目前警报输出最后一个循环的'i'值,而不是与假装内容相关的第i个循环。有什么想法吗?用javascript生成动态onclick事件

的JavaScript:

for (i = 1; i < 4; i++) { 

    prepend_content = '<a href="#" id="img1_link_' + i + '" onclick="alert(i);">foo</a>'; 
    $('#dynamic_div').prepend(prepend_content); 

} 

非常感谢。

回答

2

尝试串联像你之前做:

你可能想声明iprepend_content(与var)的情况下,你已经没有,以确保他们不会泄漏到全球范围。

同时,我不会建议在内联事件处理程序中使用或添加HTML。尝试创建该元素是这样的:

prepend_content = $("<a>").attr({ 
    href: "#", 
    id: "img1_link_" + i 
}).text("foo").on("click", (function (i) { 
    return function() { 
     alert(i); 
    }; 
})(i)); 

DEMO:http://jsfiddle.net/ujv4y/

额外使用了click处理程序立即调用函数的是使捕获的i在循环值封闭。

+0

Concatanate是正是我需要的。谢谢! :) – cranberry 2013-04-08 05:13:45

+0

值得js小提琴奖励积分...再次感谢。 – cranberry 2013-04-08 05:17:59

+0

@ user1497338没问题,很高兴帮助!让我知道如果你需要更多的帮助,这:) – Ian 2013-04-08 05:18:13

0

您可以使用讨好的警报功能(用于更复杂的东西):

function(i) { 
return function(){alert(i);} 
}