jQuery技术

如何做到 jQuery

字号+ 作者:H5之家 来源:H5之家 2015-10-14 12:00 我要评论( )

如何做到 jQuery-free?,JavaScript,UDN开发者论坛,专注企业开发的IT技术社区

本帖最后由 芭芭拉 于 2015-10-12 14:02 编辑

  jQuery 是现在最流行的 JavaScript 工具库。

  据统计,目前全世界 57.3% 的网站使用它。也就是说,10 个网站里面,有 6 个使用 jQuery。如果只考察使用工具库的网站,这个比例就会上升到惊人的 91.7%。


登录/注册后可看大图

2.jpg (20.43 KB, 下载次数: 0)

下载附件  

3 天前 上传


  虽然 jQuery 如此受欢迎,但是它臃肿的体积也让人头痛不已。jQuery 2.0 的原始大小为 235KB,优化后为 81KB;如果是支持 IE6、7、8 的 jQuery 1.8.3,原始大小为 261KB,优化后为 91KB。

  这样的体积,即使是宽带环境,完全加载也需要 1 秒或更长,更不要说移动设备了。这意味着,如果你使用了 jQuery,用户至少延迟 1 秒,才能看到网页效果。考虑到本质上,jQuery 只是一个操作 DOM 的工具,我们不仅要问:如果只是为了几个网页特效,是否有必要动用这么大的库?


登录/注册后可看大图

2.jpg (20.37 KB, 下载次数: 0)

下载附件  

3 天前 上传


  2006 年,jQuery 诞生的时候,主要用于消除不同浏览器的差异(主要是 IE6),为开发者提供一个简洁的统一接口。相比当时,如今的情况已经发生了很大的变化。IE 的市场份额不断下降,以 ECMAScript 为基础的 JavaScript 标准语法,正得到越来越广泛的支持。开发者直接使用 JavScript 标准语法,就能同时在各大浏览器运行,不再需要通过 jQuery 获取兼容性。

  下面就探讨如何用 JavaScript 标准语法,取代 jQuery 的一些主要功能,做到 jQuery-free。


登录/注册后可看大图

2.jpg (30.65 KB, 下载次数: 0)

下载附件  

3 天前 上传


  一、选取 DOM 元素

  jQuery 的核心是通过各种选择器,选中 DOM 元素,可以用 querySelectorAll 方法模拟这个功能。

  • var $ = document.querySelectorAll.bind (document);

    复制代码


      这里需要注意的是,querySelectorAll 方法返回的是 NodeList 对象,它很像数组(有数字索引和 length 属性),但不是数组,不能使用 pop、push 等数组特有方法。如果有需要,可以考虑将 Nodelist 对象转为数组。

  • myList = Array.prototype.slice.call (myNodeList);

    复制代码


      二、DOM 操作

      DOM 本身就具有很丰富的操作方法,可以取代 jQuery 提供的操作方法。

      尾部追加 DOM 元素。

  • // jQuery 写法
  • $(parent) .append ($(child));
  • // DOM 写法
  • parent.appendChild (child)

    复制代码


      头部插入 DOM 元素。

  • // jQuery 写法
  • $(parent) .prepend ($(child));
  • // DOM 写法
  • parent.insertBefore (child, parent.childNodes[0])

    复制代码


      删除 DOM 元素。

  • // jQuery 写法
  • $(child) .remove ()
  • // DOM 写法
  • child.parentNode.removeChild (child)

    复制代码


      三、事件的监听

      jQuery 的 on 方法,完全可以用 addEventListener 模拟。

  • Element.prototype.on = Element.prototype.addEventListener;

    复制代码


      为了使用方便,可以在 NodeList 对象上也部署这个方法。

  • NodeList.prototype.on = function (event, fn) {
  • []['forEach'].call (this, function (el) {
  • el.on (event, fn);
  • });
  • return this;
  • };

    复制代码


      四、事件的触发

      jQuery 的 trigger 方法则需要单独部署,相对复杂一些。

  • Element.prototype.trigger = function (type, data) {
  • var event = document.createEvent ('HTMLEvents');
  • event.initEvent (type, true, true);
  • event.data = data {};
  • event.eventName = type;
  • event.target = this;
  • this.dispatchEvent (event);
  • return this;
  • };

    复制代码


      在NodeList对象上也部署这个方法。

     

  • 1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 7个有用的jQuery小技巧

      7个有用的jQuery小技巧

      2016-02-26 13:02

    • 全面详细的jQuery常见开发技巧手册

      全面详细的jQuery常见开发技巧手册

      2016-02-26 10:02

    • jQuery Touchwipe Plugin 轻量级的手机触摸特效插件(javascript

      jQuery Touchwipe Plugin 轻量级的手机触摸特效插件(javascript

      2016-02-16 17:04

    • javascript与jQuery的那些事

      javascript与jQuery的那些事

      2016-01-19 12:01

    网友点评
    <