Ответ 1
Есть много соображений, которые следует учитывать при написании кода, который ссылается на элементы DOM. Но все это в основном сводится к нескольким простым точкам -
а. В ваших локальных функциях всегда очищайте ссылку
var menu = $('body #menu');
// do something with menu
.
.
.
menu = null;
б. Никогда не храните ссылки как часть данных элемента .data()
с. Старайтесь не использовать ссылки DOM внутри закрытий/встроенных обработчиков, вместо этого передавайте идентификаторы
function attachClick(){
var someDiv = $('#someDiv');
someDiv.click(function(){
var a = someDiv....;
//Wrong. Instead of doing this..
});
someDiv.click(function(){
var a = $('#someDiv');
//Pass the identifier/selector and then use it to find the element
});
var myFunc = function(){
var a = someDiv;
//using a variable from outside scope here - big DON'T!
}
}
Да, можно утверждать, что поисковые элементы могут замедлить работу страницы, но задержка очень минимальна по сравнению с производительностью, вызванной огромной причиной кучи esp. в больших одностраничных приложениях. Следовательно, № 3 следует использовать только после взвешивания плюсов и минусов. (Это действительно помогло мне в моем случае)
UPDATE
д. Избегайте анонимных функций. Именование ваших обработчиков событий и локальных функций поможет вам во время профилирования/просмотра снимков кучи.