Это скорее FYI, чем реальный ответ, но это также довольно интересно.
От DOM-спецификации W3C (http://www.w3.org/TR/DOM-Level-2-Core/core.html):
В DOM API-интерфейсы Основные разработаны для совместимости с широким спектром языков, включая языки сценариев общего пользования и более сложные языки, используемые в основном профессиональными программистами. Таким образом, API-интерфейсы DOM должны работать с различными философиями управления памятью, от языковых привязок, которые вообще не предоставляют пользователю управление памятью через те (в частности, Java), которые предоставляют явные конструкторы, но автоматически предоставляют автоматический механизм сбора мусора вернуть неиспользуемую память тем (особенно C/C++), которые обычно требуют, чтобы программист явно выделял память объекта, отслеживал, где он используется, и явно освобождает его для повторного использования. Чтобы обеспечить согласованный API на этих платформах, DOM вообще не затрагивает проблемы управления памятью, но вместо этого оставляет их для реализации. Ни одно из явных языковых привязок, определенных DOM API (для ECMAScript и Java), не требует каких-либо методов управления памятью, но для привязки DOM для других языков (особенно C или C++) может потребоваться такая поддержка. Эти расширения будут нести ответственность за адаптацию DOM API к определенному языку, а не к рабочей группе DOM.
Другими словами: управление памятью осуществляется до реализации спецификации DOM на разных языках. Вам нужно будет изучить документацию по реализации DOM в javascript, чтобы узнать какой-либо метод удаления объекта DOM из памяти, который не является взломом. (Существует, однако, очень мало информации на сайте MDC по этой теме.)
В записке о
jQuery#remove
и
jQuery#empty
: от того, что я могу сказать, ни один из этих методов делает ничего, кроме удаления
Object
с от DOM
node
s или удалить DOM
node
s из
document
. Они только удаляют Это, конечно, не означает, что для этих объектов нет памяти (хотя они еще не находятся в
document
).
Edit: Приведенный выше отрывок был излишним, поскольку очевидно, Jquery не может делать чудеса и работы по реализации DOM используемого браузера.
Я даже сделать для каждого элемента $ (это) .unbind() HTML ("") удалить(); – podeig
Я думал, что jQuery автоматически удаляет обработчики событий, когда вы делаете element.remove(), no? – jayarjo
@jayarjo - это – vsync