针对 jQuery 机能优化的28个发起

  一、选择器机能优化发起

  1. 老是从#id选择器来担任

  这是jQuery选择器的一条黄金法例。jQuery选择一个元素最快的要领就是用ID来选择了。

$('#content').hide();

  可能从ID选择器担任来选择多个元素: 

$('#content p').hide(); 

  2. 在class前面利用tag

  jQuery中第二快的选择器就是tag选择器(如$(‘head’)),因为它和直接来自于原生的Javascript要领getElementByTagName()。所以最好老是用tag来修饰class(而且不要忘了就近的ID)

var receiveNewsletter = $('#nslForm input.on');

  jQuery中class选择器是最慢的,因为在IE欣赏器下它会遍历所有的DOM节点。只管制止利用class选择器。也不要用tag来修饰ID。下面的例子会遍历所有的div元素来查找id为'content’的谁人节点:

var content = $('div#content');
// 很是慢,不要利用

  用ID来修饰ID也是多此一举:

var traffic_light = $('#content #traffic_light');
// 很是慢,不要利用

  3. 利用子查询

  将父工具缓存起来以备未来的利用

var header = $('#header');
var menu = header.find('.menu');
// 可能
var menu = $('.menu', header);

  4. 优化选择器以合用Sizzle的“从右至左”模子

  自版本1.3之后,jQuery回收了Sizzle库,与之前的版本在选择器引擎上的表示形式有很大的差异。它用“从左至右”的模子取代了“从右至左”的模子。确保最右的选择器详细些,而左边的选择器选择范畴较宽泛些:

  var linkContacts = $('.contact-links div.side-wrapper');

  而不要利用  

  var linkContacts = $('a.contact-links .side-wrapper');

 

  5. 回收find(),而不利用上下文查找

  .find()函数简直快些。可是假如一个页面有很多DOM节点时,需要往返查找时,大概需要更多时间:

var divs = $('.testdiv', '#pageBody');
// 2353 on Firebug 3.6
var divs = $('#pageBody').find('.testdiv');
// 2324 on Firebug 3.6 - The best time
var divs = $('#pageBody .testdiv');
// 2469 on Firebug 3.6

  6. 操作强大的链式操纵

  回收jQuery的链式操纵比缓存选择器更有效:

$('li.menu-item').click(function () {alert('test click');})
.css('display', 'block')
.css('color', 'red')
fadeTo(2, 0.7);

  记着,永远不要让沟通的选择器在你的代码里呈现多次:

  (1)为了区分普通的JavaScript工具和jQuery工具,可以在变量首字母前加上$标记。

  7. 编写属于你的选择器

  假如你常常在代码中利用选择器,那么扩展jQuery的$.expr[':']工具吧,编写你本身的选择器。下面的例子中,我建设了一个abovethefold选择器,用来选择不行见的元素:

$.extend($.expr[':'], {
abovethefold: function(el) {
return $(el).offset().top < $(window).scrollTop() + $(window).height();
}
});
var nonVisibleElements = $('div:abovethefold'); // 选择元素

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/10206.html