【发布时间】:2011-11-18 20:40:58
【问题描述】:
我正在尝试学习一些关于优化我的 jQuery 代码的知识...
有没有办法改进下面的代码,使变量$selected在函数外声明,但仍然可以访问,这样就不用每次都遍历DOM了?
或者这段代码是否已尽可能优化?
或者...我想我可能误解了 jquery DOM 遍历发生的方式和时间。
$('#full-width-layout_c1_col-1-1_1').on(
'mouseenter mouseleave click',
'a.project_open, a.song_open',
function(e) {
var $selected = $(this).closest('tr').find('div');
if (e.type == 'mouseenter') {
$selected.addClass("hovered");
}
else if (e.type == 'mouseleave'){
$selected.removeClass("hovered");
}
else if (e.type == 'click'){
$selected.addClass('opened');
}
}
);
【问题讨论】:
-
对不起,我忽略了性能优化要求。我已经删除了我的答案
-
js 代码看起来不错,进一步优化(可能)需要您发布 HTML 本身。
-
HTML 都是通过 jquery 模板动态生成的,并通过创建表的 json 数据提供...这就是为什么当我悬停时我需要向上遍历特定行然后再次向下遍历 div 和给它添加一个类。我想这真的是我所能做的优化,除非 .data 方法最终成为赢家。
标签: javascript jquery optimization