Этот код jQuery 1.3.2 добавляет элемент на страницу, регистрирует событие «щелчка», затем удаляет и повторно присоединяет элемент:
var button = $('<button>Click me!</button>')
.click(function(){ alert("Hello") })
.appendTo('body');
$('body').html('');
button.appendTo('body');
Кнопка появляется на странице, как и ожидалось, но нажатие на нее ничего не делает. Я хотел бы знать, почему обработчики событий были удалены из объекта.
Примечание. Мне известны такие решения, как jQuery.live()
или clone(true)
или использование appendTo
без удаления. Я ищу объяснение , а не решение или обходной путь.
РЕДАКТИРОВАТЬ: я полагаю, это может быть произвольным и нелогичным решением DOM. Объяснение типа «потому что так хочет раздел X спецификации Y», было бы хорошо.