Jquery 实用技巧

Posted 撩前端

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jquery 实用技巧相关的知识,希望对你有一定的参考价值。

New Version: v3.2.1

/* 本次分享,纯属个人理解 */

    

  // 用一个函数域包起来,就是所谓的沙箱

  // 在这里边 var 定义的变量,属于这个函数域内的局部变量,避免污染全局

  // 把当前沙箱需要的外部变量通过函数参数引入进来

  // 只要保证参数对内提供的接口的一致性,你还可以随意替换传进来的这个参数


(function(window, undefined) {

  // jQuery 代码

})(window);

来源于:https://www.cnblogs.com/coco1s/p/5261646.html


一、jq 闭包结构

  (function(window, factory) {

    // jQuery 代码

    })( typeof window !== "undefined" ? window : this, function() {

      // jQuery 代码

    } );

    

   *常见面试题:js闭包

    

二、jq 扩展方式(静态、实例

    $.extend()  或  jQuery.extend()    静态方法

    $.fn.extend()  和  jQuery.fn.extend()    实例方法

   

使用方式:

    1)、 $.fun() 

    全局方法使用

    2)、$().fun() 

    在这个 DOM 上操作,函数中的 this 的类型为 Object

* 你是否尝试过在控制台直接输出" $ "?


jQuery文件加载和未加载的页面对比。

    ƒ $(selector, [startNode]) { [Command Line API] }

    ƒ (a,b){return new n.fn.init(a,b)}

分析源码:

1、定义方法。90行:

     var version = "3.2.1",

    // Define a local copy of jQuery

     jQuery = function( selector, context ) {

     // The jQuery object is actually just the init constructor 'enhanced'

     // Need init if jQuery is called (just allow error to be thrown if not included)

         return new jQuery.fn.init( selector, context );

     },


2、赋值。10246行:

      // Expose jQuery and $ identifiers, even in AMD

      // (#7102#comment:10, https://github.com/jquery/jquery/pull/557)

      // and CommonJS for browser emulators (#13566)

      if ( !noGlobal ) {

           window.jQuery = window.$ = jQuery;

      }


 3、noGlobal  的由来。16行:

       "use strict";

       if ( typeof module === "object" && typeof module.exports === "object" ) {

         // For CommonJS and CommonJS-like environments where a proper `window`

         // is present, execute the factory and get jQuery.

         // For environments that do not have a `window` with a `document`

         // (such as Node.js), expose a factory as module.exports.

         // This accentuates the need for the creation of a real `window`.

         // e.g. var jQuery = require("jquery")(window);

         // See ticket #14549 for more info.

         module.exports = global.document ? factory( global, true ) : function( w ) {

            if ( !w.document ) {

                 throw new Error( "jQuery requires a window with a document" );

             }

             return factory( w );

           };

        } else {

           factory( global );

       }

                    

4、最后一行。return jQuery;

            

四、js 的链式调用 ( javascript设计模式 --- 方法的链式调用

        layout.loading().verify().init(); 

        这处请访问源码:https://www.bugbank.cn/js/layout.js?v=22018


在此感谢我的导师(S.M)

附:https://github.com/532604872/blogs/blob/master/bkframe.js


问题解答处:

    1、闭包:能够获取其他函数内部变量的函数。

    2、请自己在控制台尝试。


以上是关于Jquery 实用技巧的主要内容,如果未能解决你的问题,请参考以下文章

Jquery 实用技巧

最实用的50个jquery小技巧

jquery实用技巧之输入框提示语句

jquery实用应用之jquery操作radiocheckboxselect

超实用的JQuery小技巧

Jquery 小技巧