jQuery(expression, context)
这个函数通过接收一个CSS选择器context,查找指定的字符串expression。它能缩小选择器在DOM中搜索的方位,达到节省时间,提高效率的目的。
普通方式:$('.myDiv'); 改进方式:$('.myDiv', $('#parentNode'));
普通方式将会从dom第一个节点开始查找,而改进方式将会通过getElementById('parentNode')查找到父节点,然后再通过父节点find('.myDiv'),效率更高。
最快的方式是采用ID选择器,它通过getElementById()方法查找,一一对应。
其次是tag标签,如$('head'),通过getElementByTagName()方法查找。在重复使用同一个标签时,将selector缓存为变量,避免查找带来不必要的开销。
如
function hasEitherClass(element, className1, className2) {
return element.className == className1 || element.className == className2;
}
其中element将会被重复搜索
同理,使用方法链如$('#myDiv').removeClass('off').addClass('on').appendTo($('#parentNode'));也是减少选择器的多次查找使用。
有类似这样的代码$('.dialog > .content > .attr > .lv > span').html('LV10');认为这种结果查找效率会按照类似层次关系进行,其实也只是一种错觉而已,上面改写成
$('.dialog .content .attr .lv span').html('LV10');也没问题,查找效率同最初提到的普通方式没什么区别。