jQuery 相关

作者: YouKnowznM | 来源:发表于2017-11-23 11:39 被阅读0次
  • 在jQ元素上调用.click()并不会触发原生js的点击事件,而是已绑定的jQ点击事件

  • 宽高属性获取

    innerWidth 包含 padding 不包含 border
    outerWidth 包含 padding border 传入true包含margin
    width 只返回元素本身宽度
    
  • $全局对象

    (function(window, undefined){
    
      var zQuery = (function(){
        // zQuery对象就是zQuery.fn.init对象
        // 使用new关键字的话,返回的还是zQuery.fn.init对象,所以直接zQuery()即可
        var zQuery = function(selector, context){
          return new zQuery.fn.init(selector, context);
        };
        // 添加到zQuery.fn的方法,也被添加到zQuery.prototype,这样new zQuery()写法产生的实例也拥有这些方法
        zQuery.fn = zQuery.prototype = {
          constructor: zQuery,
          init: function(selector, context){
            // ...
          }
        };
        // 如上所述,使用zQuery(s, c)方法、不使用new zQuery()时,返回的是zQuery.fn.init对象;
        // 将它的构造函数原型也指向zQuery.fn,这样不管用哪种方法创建的zQuery对象都拥有添加到zQuery.fn的所有方法
        zQuery.fn.init.prototype = zQuery.fn;
        return zQuery;
      });
    
      window.zQuery = window.$ = zQuery;
    
    })(window);
    
  • $.ready(fn) window 的 DOMContentLoaded 和 load 事件的区别

    $.ready() 和 window.onDOMContentLoaded 类似,在dom树渲染完成之后触发,图片、样式表等此时未必加载完成;
    而 window.onload 在所有资源均加载完成后触发
    
    如果在$.ready(fn)之前dom树已经渲染完成(即产生了DOMContentLoaded),fn仍然会被执行;相反,在fn触发之后产生的DOMContentLoaded却不会执行
    

  • 代码总体结构
    最外层是一个自调用匿名函数,规定形参windowundefined,之后显式传入window。这样做使得:
    1. 其内部除了jQuery对象,所有变量和函数对外不可见,避免它们和外部的任何同名变量和函数产生冲突。
    2. 在其内部访问windowundefined时无需将作用域链一层层退回至最顶层,速度更快。
    3. 第二个形参undefined保证了低版本浏览器对window.undefined的修改无效。ES5 之前的undefinedNaNInfinity并不是只读的属性。--实际上这个形参叫啥都可以,只要调用时不提供,即可保证内部能取到undefined--。

    然后是内部的 jQuery 构造器。创建过程如下:

    var jQuery = (function() {
        /*
        外层的 jQuery 对下面的函数内部完全不可见,只是它的返回值的一个引用。这样把内部的局部变量与外面隔绝,避免冲突。
        其实内部的 jQuery 其实可以换成任意字面量,但会降低可读性。
        */
        var jQuery = function( selector, context ) {
            /*
            一般情况下,new 关键字的表达式返回的是构造函数直接产生的实例;
            但构造函数有返回值(!并且为对象)时,该表达式会返回这个值。
            下文又把 jQuery.fn 指向了 jQuery 函数的原型,
            所以 $()、jQuery() 实际上返回的都是 new jQuery.fn.init(),
            这样创建 jQuery 对象时就不需要 new 关键字了。
            */
            return new jQuery.fn.init( selector, context, rootjQuery );
        };
        // (声明局部变量)
        jQuery.fn = jQuery.prototype = {
            constructor: jQuery,
            init: function( selector, context, rootjQuery ) {
                // (添加原型属性和方法)
            }
        };
        /*
        再将 jQuery.fn.init() 方法的原型指向 jQuery() 函数的原型,
        这样如果用户直接在 jQuery.prototype 上添加了属性和方法,它们也对 $() (即 jQuery.fn.init() )产生的实例可见!!!
        除了 666 我还能说什么呢?
        */
        jQuery.fn.init.prototype = jQuery.fn;
        // (添加其它属性和方法)
        return jQuery;
    )();
    

    最后让$也指向jQuery,把它们暴露在window下,大功告成。

相关文章

  • JQuery学习:第一篇

    相关知识点: jquery的介绍 jquery控制css jquery控制html jquery控制标签属性 jq...

  • jQuery相关

    jQuery 能做什么? 首先要明白jQuery是一个JavaScript函数库,它极大地简化了JavaScrip...

  • jQuery 相关

    在jQ元素上调用.click()并不会触发原生js的点击事件,而是已绑定的jQ点击事件 宽高属性获取innerWi...

  • jQuery相关

    1. jQuery 能做什么? 首先jQuery是一个简单、精简、功能丰富的JavaScrip工具库,他提供了易于...

  • JQuery相关

    18.12.191、isNaN()内置函数的用法,不是数据格式的返回true!!(1)isNaN() 函数通常用于...

  • Jquery相关

    1. Jquery 相关文档 http://jquery.cuishifeng.cn 2. http-serve...

  • Git常用操作

    远程仓库相关命令 检出仓库:$ git clone git://github.com/jquery/jquery....

  • JQUERY UI使用初体验

    JQUERY UI使用初体验:JQUERY UI网址:https://jqueryui.com/ 相关文件下载地址...

  • jQuery相关操作

    jquery 选择器 jquery用法思想一选择某个网页元素,然后对它进行某种操作 jquery选择器jquery...

  • JQuery相关总结

    一、 认识jQuery 1、 概述 之前,我们为了方便使用,封装了ajax.js,能够查找指定ID的DOM对象,使...

网友评论

    本文标题:jQuery 相关

    本文链接:https://www.haomeiwen.com/subject/peqzvxtx.html