2

Мне необходимо динамически создать несколько кнопок с присваиванием каждой каких то атрибутов и навешивания onclick. Почему то все кнопки получают событие последней, а не свое собственное. Где я лажанулся и как решить проблему?

var buttons = {
"yes": {title: "Да", onclick: function(){alert('Да')} }, 
"no": {title: "Нет", onclick: function(){alert('Нет')}}
};

for(key in buttons)
{
let button = $("<button />").attr("name", key).html(buttons[key].title);
$("body").prepend(button);


$(button).on("click", function()
{
    buttons[key].onclick();
});
} 
  • 1
    Сделайте let key, как вариант – Regent Oct 19 '18 at 15:11
  • Бинго! спасибо! А почему моя данная логика сработала неверно, интересно? – Ilya Bazhinov Oct 19 '18 at 15:12
  • На здоровье. Остальные варианты есть в связанном вопросе – Regent Oct 19 '18 at 15:13
  • 1
    "А почему моя данная логика сработала неверно" - потому что к моменту (асинхронного) вызова обработчика события key указывает на последний ключ объекта. Более подробно можно прочитать в том вопросе – Regent Oct 19 '18 at 15:14
  • Все понял! Еще раз спасибо! – Ilya Bazhinov Oct 19 '18 at 15:15

0 Answers0