Memory Leaks
Memory leaks in jQuery apps usually come from event handlers not removed, closed-over DOM references, or data stored on removed elements.
Memory leaks in jQuery apps usually come from event handlers not removed, closed-over DOM references, or data stored on removed elements.
// Leak: event handler references outer variable after element removed
function bindHandler(el, data) {
$(el).on("click", () => process(data)); // data in closure
// If el removed without .off(), closure prevents GC
}
// Fix: remove handlers before removing elements
$(el).off("click").remove();
// Fix: use delegation so handler lives on stable parent
$(document).on("click", ".btn", handler);
// Clean up on SPA route change
function cleanup() {
$(window).off("scroll.myns resize.myns");
$.ajaxSetup({ beforeSend: null });
}
Use namespaced events (.off("click.myns")) to remove only your handlers without affecting others.