.append()
我使用jQuery的方法遇到了一个奇怪的行为。
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 的文档,也许这是相关的:
但是,如果有多个目标元素,则会为第一个目标之后的每个目标创建插入元素的克隆副本。
或者,我需要重构我的代码。我测试了不同的解决方案,但都没有奏效。任何人都可以帮助我吗?