Этот 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, хочет, чтобы она была", был бы прекрасен.
Когда вы удаляете элемент с флэш-накопителя с помощью jQuery, все данные (включая обработчики событий), удерживаемые jQuery на этом элементе, будут уничтожены. Это делается во избежание утечек памяти.
Это не является функцией (или ошибкой) API DOM. Это просто jQuery.