
jQuery源码分析
文章平均质量分 50
Anita-Sun
一只热衷于分享前端知识的奶牛猫~ ️
展开
-
jQuery中的功能检测方法jQuery.support
// 输出在图片// $(function(){// for(var attr in $.support) {// $('body').append('<div>' + attr + ':'+ $.support[attr] + '</div>');// }// });// 只是用于检测操作,检测哪些支持,哪些不支持// 具体的处理是通过hooks来解决的jQuery.support = (function( support ) { var in原创 2021-04-30 21:30:48 · 226 阅读 · 2 评论 -
jQuery中的Deferred和when分析
jQuery.Deferred源码分析观察者模式:组成部分:发布者和观察者发布者主要负责发布内容,观察者主要负责监听发布者的任务。发布者会维护一个订阅者列表从程序角度来看: 订阅者就是一堆的方法,发布者的推送内容的动作就是依次调用订阅者列表中的方法(订阅者),而发布的内容就将以参数的形式提供给订阅者。在Deferred中使用观察者模式:源码分析:// 可以通过调用方法deferred.done/fail/progress/then/always()添加成功回调函数、失败回调函数、消息回原创 2021-04-30 14:14:12 · 236 阅读 · 2 评论 -
jQuery的callback函数
基本使用```js// 基本使用function aaa(){ alert(1);}function bbb(){ alert(2);}var cb = $.Callbacks();cb.add(aaa);cb.add(bbb);cb.fire();//-------------------------------var cb = $.Callbacks();function aaa(){ alert(1);}cd.add(aaa);(functi原创 2021-04-27 20:43:34 · 973 阅读 · 2 评论 -
jQuery源码 - 扩展一些工具方法
概述// 工具方法不仅可以给jQuery对象来用,也可以给原生js来用// 是jQuery底层最基本的架构// 调用了之前写的jQuery.extend() 扩展jQuery 静态方法// jQuery.extend({a: 'XXX', b: 'XXX'});expando: 生成唯一JQ字符串(内部)noConflict(): 防止冲突isReady: DOM是否加载完(内部)readyWait: 等待多少文件的计数器(内部)holdReady(): 推迟DOM触发ready():原创 2021-04-26 22:44:07 · 183 阅读 · 0 评论 -
JS中的稀疏数组与密集数组
一般来说,JavaScript中的数组是稀疏的,也就是说,数组中的元素之间可以有空隙,因为一个数组其实就是一个键值映射.本文解释了如何创建稀疏数组和不稀疏的数组.稀疏数组创建一个指定长度的稀疏数组很简单:> var a = new Array(3);> a[ , , ]> a.length3> a[0]undefined当你遍历它时,你会发现,它并没有元素.JavaScript会跳过这些缝隙.> a.forEach(function (x, i) .转载 2021-04-26 20:47:31 · 271 阅读 · 0 评论 -
jQuery中有关DOM加载的代码
DOM加载有关的扩展isReady: DOM是否加载完(内部使用)readyWait: 等待多少文件的计数器(内部使用)holdReady(): 推迟DOM触发ready(): 准备DOM触发。jQuery.ready.promise=function(){}; 监听DOM的异步操作(内部使用)$(function(){})和原生window.onload的关系执行时机页面加载,先加载节点,再加载文件,比如img文件,flash等。$(function(){})DOM加载完执行。可原创 2021-04-26 10:28:42 · 482 阅读 · 1 评论 -
jQuery的deferred对象详解
jQuery的deferred对象详解-阮一峰转载 2021-04-25 23:10:02 · 115 阅读 · 0 评论 -
JavaScript高级程序设计 - 第十章 DOM
DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的结构NodeNode类型:Node.ELEMENT_NODE(1);一个 元素 节点,例如 <p> 和 <div>。Node.TEXT_NODE(3);Element 或者 Attr 中实际的 文字Node.CDATA_SECTION_NODE(4);一个 CDATASection,例如 <!CDATA[[ … ]]>。Node.PROCESSING_INSTRUCTION_NODE(.原创 2021-04-25 20:48:32 · 138 阅读 · 0 评论 -
addEventListener()方法,事件监听
addEventListener() 方法,事件监听removeEventListener(),移除事件的监听语法addEventListener()element.addEventListener(event, function, useCapture);第一个参数是事件的类型 (如 “click” 或 “mousedown”).第二个参数是事件触发后调用的函数。第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。将 <p> 元素插入到 <div>.原创 2021-04-25 08:47:23 · 381 阅读 · 0 评论 -
DOM Document.readyState 属性
描述一个document 的 Document.readyState 属性描述了文档的加载状态。当该属性值发生变化时,会在document 对象上触发readystatechange事件。document.readyState一个文档的 readyState 可以是以下之一:loading / 正在加载document 仍在加载。interactive / 可交互文档已被解析,"正在加载"状态结束,但是诸如图像,样式表和框架之类的子资源仍在加载。complete / 完成文档和所有子资原创 2021-04-25 08:09:22 · 272 阅读 · 0 评论 -
( 285 => 347)JQ的继承方法
JQ的继承方法使用方法:// jQuery.extend 将一个方法扩展到函数下面,叫扩展静态方法// jQuery.fn.extend 将一个方法扩展到原型对象下面,扩展实例方法jQuery.extend = jQuery.fn.extend// 当只写一个对象自变量的时候,JQ中扩展插件的形式$.extend({ aaa: function(){ alert(1); }, bbb: function(){ alert(2); }});$.aaa();原创 2021-04-24 21:14:05 · 242 阅读 · 0 评论 -
js中布尔值为false的六种情况
undefined(未定义,找不到值时出现)null(代表空值)false(布尔值的false,字符串"false"布尔值为true)0(数字0,字符串"0"布尔值为true)NaN(无法计算结果时出现,表示"非数值";但是typeof NaN===“number”)“”(双引号)或’’(单引号) (空字符串,中间有空格时也是true)...原创 2021-04-24 20:58:31 · 916 阅读 · 0 评论 -
(96, 283)给JQ对象,添加一些属性和方法
简化代码结构jQuery的初始化jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' return new jQuery.fn.init( selector, context, rootjQuery );}jQuery对象的属性和方法jQuery.fn = jQuery,prototype = { jquery: 版本原创 2021-04-24 11:06:20 · 1006 阅读 · 0 评论 -
类数组对象转换成数组的方法
ES6语法 Array.from(arr)//将hdList用Array.from()方法转换为数组,并用list变量接收let list = Array.from(hdList);用Array.prototype.slice.call(elems)方法转化为数组 或 [].slice.call(elems)//hdList转化为数组并用list变量接收let list = Array.prototype.slice.call(hdList);//添加点击事件list.forEach((cu原创 2021-04-24 09:35:28 · 294 阅读 · 0 评论 -
Array.prototype.slice.call()方法详解
Array.prototype.slice.call(arguments, 1)可以理解成是让arguments转换成一个数组对象,让arguments具有slice()方法Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组,除了IE下的节点集合(因为ie下的dom对象是以com对象的形式实现的,js对象与com对象不能进行转换)var a={length:2,0:'first',1:'second'};//类数组,有length属性,长.原创 2021-04-24 09:24:35 · 616 阅读 · 0 评论 -
jQuery中this和$(this)的区别总结
this// 这里的this其实是一个html 元素(textbox),textbox有text属性$("#textbox").hover( function() { this.title = "Test"; }, fucntion() { this.title = "OK”; } );$(this)// $(this)是jQuery对象$("#textbox").原创 2021-04-24 08:56:50 · 129 阅读 · 0 评论 -
jQuery中的init方法
// if(typeof selector === "string") 的情况// selector 代表的是选择的东西// context 代表在什么范围内选择(不填就是选择全部)// $('<li>'); match = [null, '<li>', null];// $('<li>1</li><li>12</li>'); match = [null, '<li>1</li>&l原创 2021-04-23 18:16:59 · 1179 阅读 · 0 评论 -
DOM中元素结点、属性结点、文本结点的理解
每个节点都拥有包含着关于节点某些信息的属性nodeName 结点名称nodeValue 结点值nodeType 结点类型元素结点<HTML> <HEAD> <TITLE>空谷悠悠</TITLE> </HEAD> <BODY> <table> <tr> <td id="john" name="myname"&g.原创 2021-04-23 14:37:28 · 185 阅读 · 0 评论 -
jQuery.parseHTML()的第二个参数如何使用
官方文档参考文档这个函数的作用就是把一段 html 字符串变成 DOM。如果只有一个结点(document.createElement):<div>test</div>使用document.createElementvar d = document.createElement('div');d.innerHTML = 'test';document.appendChild(d);如果有多个结点创建一个新的结点,用innerHTML方法把字符串插到这个原创 2021-04-23 14:22:57 · 201 阅读 · 3 评论 -
【21 => 94】变量和函数的定义
源码var // rootjQuery = jQuery(document); rootjQuery, // The deferred used on DOM ready readyList, // Support: IE9 // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined` core_strundefined = typeof undefine原创 2021-04-23 09:03:28 · 101 阅读 · 0 评论 -
jQuery事件详解之$(document)
执行时机window.onload是在网页中所有元素加上所有资源完全加载到浏览器后才执行。而$(document).ready()中绑定的事件是在dom完全就绪时就可以被调用,此时对于jQuery来说都是可以被访问的(关联的资源可能并没有被加载完毕)举个例子来说,在$(document).ready()中定义了图片的宽高,但由于此时图片还没有被加载完毕,此时的宽高不会生效。要解决这个问题可以使用jQuery中的load()方法。load()方法会在元素的onload事件中绑定一个处理函数,如果该处原创 2021-04-22 21:38:41 · 1263 阅读 · 0 评论 -
jQuery源码分析—1
jquery版本:jQuery-2.0.3.js立即执行函数定义:在立即执行函数中书写的任何变量和函数在外边都是找不到的原因是希望把函数和变量都局部的,防止和其它的代码冲突,所以得对外提供接口,才可以找到这些方法(function(){ var a = 10; function $(){ alert(a); }})();对外提供接口的方法:(function(){ var a = 10; function $(){ alert(a); }.原创 2021-04-22 19:49:10 · 143 阅读 · 2 评论