jQuery相关

来源:互联网 发布:linux公社 编辑:程序博客网 时间:2024/06/06 01:29

1.query源码如何实现选择器的,为什么$取得的对象要设计成数组的形式

2.jQuery怎么实现性能优化

  1. 使用最新版本的jQuery(现在最新的版本是3.2
  2. 使用jQuery中调用原生的选择器,如:$("#div"),$("div"),$(".foo")这样的类选择器在IE8一下会很慢因为没有原生方法getElementByClassName(),最慢是选择器就是伪类选择器($( ':隐藏')``)和属性选择器$('[attribute=value]')
  3. 尽量适应原生的方法
  4. 多做一些缓存,减少这样的重复使用 jQuery('#top').find('p.classA'); jQuery('#top').find('p.classB');

  5. 使用链式的写法,因为jQuery会自动缓存每一步之后的查询查询结果

  6. 多用事件委托,不用所有的时间都要绑定事件,下面的做法是最好的了
     $(文件)。on(“ click ”,“ td ”,function(){
        $(this)。toggleClass(“ click ”);
      });
     
  7. 将CSS的样式合并为一个类插入,合并DOM之后在插入
  8. 尽量使用工具方法,例如$.data(elem[0],key,value);不要使用elem.data(key,value);,的英文这因为elem.data的英文定义在jQuery的对象的原型上面的,而$.data的英文定义在jQuery对象上面的,减少了原型链的查找
    少量尽的新增jQuery对象
  9. 少量尽的新增jQuery对象
  10. 可以考虑使用延时对象

3.jQuery中的window.onload和$(document).ready()的区别

触发的机制不一样这两个事件的出发机制是不一样的,我们先看一下文档的加载过程

  1. 解析HTML结构
  2. 加载外部的样式和脚本
  3. 解析并且执行脚本代码
  4. DOM树简历完成
  5. 加载图片等外部文件
  6. 页面加载完毕

    总的来说$(document).ready()加载完毕只运行到第四步
    window.onload是指的页面加载完毕运行到最后

4.jQuery的ajax使用

5.手写一个jQuery插件

6.手写实现jquery里面的insertAfter

7.jQuery源码的一些问题

阅读jQuery的源码了解的东西

  1. sizzle特别大
  2. 链式调用
  3. 事件冒泡的处理:

    (1)jQuery的中明确禁止一种不断冒泡的事件,即加载事件
    (2)在内部的jQuery通过任何加载事件传递了一个特别的noBubble:true
    (3)所以图片的加载事件不会冒泡到窗口,(可能被误匹配为窗口的加载事件

  4. 对AJAX进行的封装

8. jQuery的自定义事件

$(' #foo ').bind(“ a ”,function(){});$(' #foo ').trigger(' a ');

9. jQuery的中选择器的实现

jQuery要先进行一个词法分析,比如div#box > .title 会解析为

[{type :“ TAG ”,value :“ div ” },{type :“#”,value :“ box ” },{type :“ > ”,value :“ > ” }{type :“.”,value :“ title ” }]

10.jQuery的流程

1.在$或者$.fn上面添加有个方法(也就是插件的名字)

jQuery.fn.myPlugin  =  function(){     //插件的具体内容放在这里};

2.闭包里面的这个不是jQuery对象是DOM元素(这个指向调用插件的jQuery对象)

(函数($){     $。FN。为myplugin  =  函数(){         //没有必要再作$(这),因为“这”已经是jQuery的对象了        // $(本)与$($('#元件'))是相同的        淡入('正常',函数(){             //在这里这个关键字指向DOM元素        });                         };          })(jQuery);$(' #element ').myPlugin();

3.设置默认值和选项并进行扩展

 var settings =  $。extend({   ' location '' top '' background-color '' blue ' },options);

4.书写私有成员,对外开放的成员