我从jQuery源码中学到的10堂课

这是Paul Irish录制的一段讲述他从jQuery源码中学到的10堂课的非常生动有趣的视频,因为是在TXJS会议现场录制的,所以有点拖沓,如果翻墙不便或者没有时间,可以看看下面我总结的亮点,每一条都很受用:

1. jQuery的精华所在:

(function(window,document,undefined){ ... })(this,this.document);

2. jQuery.props

$(elem).attr('averylongattribute', 'some value');
$.props['avla'] = 'averylongattribute';
$('elem').attr('avla', 'aaaa');

3. jQuery.noConflict, 防止命名冲突的绝佳实现

4. 自定义fade speed

jQuery.fx.speeds.fastopen = ($.browser.msie & $.browser.version < 8) ? 800 : 400;
$("#stuff").fadeIn("fastopen");

5. $.getJSON()以及$.getScript(),下面是一段很神奇的代码,一定要在firebug或者inspector中执行一下:

$.getScript('http://www.cornify.com/js/cornify.js',  function(){
  var times = [42, 28, 75, 50, 62];
        times = times[Math.floor(Math.random()*times.length)];

  while(--times)
    cornify_add();
});

6. selector performance, $("#id").find("tag.thing") 快于 $("#id tag.thing")

7. JSON parse, 优先使用原生JSON parser

window.JSON && window.JSON.parse ?
                  window.JSON.parse(data) :
                  (new Function("return " + data))();

8. $.unique, 扩展unique方法可以作用于所有元素:http://paulirish.com/2010/duck-punching-with-jquery/

$.unique(["first", 7, true, 2, 7, true, 'last', 'last']); // ['first', 7. true, 2, 'last']

9. delay,如果想直接使用delay,可以试试下面的方法:

$(elem).fadeIn().delay(2000).fadeOut();
$(elem).queue(function() {
     $(elem).delay(2000).fadeOut();
});

10. jQuery.support和Makefile

如果还没尽兴,这里还有一个升级版的11堂课:http://www.youtube.com/watch?v=ARnp9Y8xgR4&feature=related

anyShare分享到:
      
This entry was posted in 分类?没有. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.
  • 作者

    Yuanyi Zhang

    http://about.me/yuanyiz/
    不靠谱的各种伪,爱coding,爱旅行,爱摇滚,爱欧冠,爱熬夜,不爱晚起,最爱老家县城曾经2毛现在5毛一串的烤肉。
  • 关于黑客志

    黑客志是一个多人协作的群体Blog,旨在为国内开发者提供新鲜和高质量的黑客文章。我们的文章主要来自Hacker News,如果您也想和我们一道传播黑客精神,请立刻加入我们!

    立即加入!

  • 版权声明

    本网站所有文章版权归原作者所有,请根据作者选择的文章版权,在协议允许的范围内进行使用,或联系作者获取授权。

  • 关注我们

    新浪微博 Google+ Twitter RSS

无觅相关文章插件,快速提升流量