1.4 纯 JavaScript 与 jQuery

即便是像刚才那么简单的任务,如果不用jQuery而是我们自己手工写代码也会非常麻烦。若用纯JavaScript的话,可以通过下面的代码清单1-3达到同样的目的。

代码清单1-3

  1. window.onload = function() {
  2. var divs = document.getElementsByTagName('div');
  3. for (var i = 0; i < divs.length; i++) {
  4. if (hasClass(divs[i], 'poem-stanza')
  5. && !hasClass(divs[i], 'highlight')) {
  6. divs[i].className += ' highlight';
  7. }
  8. }
  9. function hasClass( elem, cls ) {
  10. var reClass = new RegExp(' ' + cls + ' ');
  11. return reClass.test(' ' + elem.className + ' ');
  12. }
  13. };

且不论这段代码有多长,就算这样它还是不能像代码清单1-2中的jQuery代码一样处理多种可能的情况,比如它并不能:

  • 正确地处理其他window.onload事件处理程序;

  • 在DOM就绪后马上执行;

  • 利用较新的DOM方法来检索元素和执行其他任务,从而优化代码性能。

两相比较就会发现,jQuery代码不仅写起来省事,读起来简单,而且也比纯JavaScript代码的执行速度更快。