【发布时间】:2013-09-04 16:26:07
【问题描述】:
我在使用 jQuery 的 .append() 方法时遇到了一个奇怪的行为。
var container = $('#container');
var buttons = {
'Okay': function() {
return 'Yeah, I\'m okay with this.';
},
'Nope': function() {
return 'No, no, definitively no.';
},
'Maybe': function() {
return 'Hum, maybe.';
}
};
for(var button_label in buttons) {
var button_callback = buttons[button_label];
var button_html = $('<button type="button">' + button_label + '</button>');
button_html.on('click', function() {
alert('button : ' + $(this).text() + ', callback : ' + button_callback());
});
container.append(button_html);
}
一切正常,除了,如您所见,单击所有按钮时:调用相同的回调(最后一个在buttons 对象中定义)。我检查了 jQuery 的文档,也许这是相关的:
但是,如果有多个目标元素,则会为第一个目标之后的每个目标创建插入元素的克隆副本。
或者,我需要重构我的代码。我测试了不同的解决方案,但都没有奏效。任何人都可以帮助我吗?
【问题讨论】: