Вы можете использовать removeEventListener
или off()
, чтобы удалить прослушиватель событий раньше.
$("#nestable .button-delete").off().on("click", deleteFromMenu);
$("#nestable .button-edit").off().on("click", deleteFromMenu);
Обновлено (Дайте лучшее решение)
Если #nestable
имеет значение c, вы должны переместить событие слушателя за пределы метода addToMenu
.
Формат: $(staticAncestors).on(eventName, dynamicChild, function() {});
Так что в вашем случае
// set events
$("#nestable").on("click", '.button-delete', deleteFromMenu);
$("#nestable").on("click", '.button-edit', prepareEdit);
var addToMenu = function () {
....
// update JSON
updateOutput($('#nestable').data('output', $('#json-output')));
};
Прочитайте следующий пост, чтобы лучше понять.
Привязка событий к динамически создаваемым элементам?