JSPGen软件开发框架第四版 开发手册
2.9.1、使用闭包
(function($) { // ... Code goes here })(jQuery);
这是来自jQuery官方的插件开发规范要求,使用这种编写方式的好处是:
避免全局依赖、避免第三方破坏、兼容jQuery操作符 '$' 和 'jQuery '
这段代码在被解析时会形同如下代码:
var func = function($) { // Code goes here }; func(jQuery);
前者使用的是匿名函数形式。
2.9.2、扩展
jQuery提供了2个扩展‘基类’,分别为 $.extend和$.fn.extend,我们可以选择第二种方式做一个简单插件:
(function($){ $.fn.myplugin = function(){ alert(this[0].tagName); } })(jQuery); // 之后我们便可按如下方式进行调用: $('selector').myplugin();
2.9.3、选择器
jQuery提供了功能强大,并兼容多种css版本的选择器,不过在使用选择器遵循以下规则:
A、尽量使用Id选择器,效率高于css选择器;
B、避免迭代选择器,如$('.jquery .child'),获取 className为jquery的dom下的所有className为child的节点,其实这样编写代码付出的代价是非常大的,jQuery会不断的进行深层遍历来获取需要的元素,即使确实需要,我们也应该使用如:
$(selector, context)、$('selector1>selector2')
$(selector1).children(selector2)、$(selctor1).find(selector2) 之类的方式
C、使用缓存:每次调用 $('x')都会使用一部分内存,所以尽可能的这样定义:
var $x = $('selector'); $x.click(function(){ alert($x.attr('tagName')); // 而不是 alert($(this).attr('tagName')); // 更不是 alert($('selector').attr('tagName')); });