Jquery 实现原理 :event源码结构

1、 helper 对象 jQuery.event

jQuery.event 是一个helper对象,它是事件机制的真正实现,其他的api比如 on, click什么的都是对他的封装而已。基本结构如下:

jQuery.event = {

add: function(){}

remove: function(){}

trigger: function(){}

dispatch: function(){}

handlers: function(){}

fix: function(){}

special: function(){}

}

说说每个函数的作用:

add

在一个元素上注册一个事件,其实现过程在上面已经说过了,具体实现细节就不谈了。

remove

删除一个事件

trigger:触发事件,这里是触发浏览器原生的事件,注意其中有这么一行代码:elem[ type ]();

dispatch:事件分发,注意和trigger的区别,trigger是触发原生事件,而dispatch只是调用jquery注册的事件。如果你调用trigger,其会触发原生事件,然后原生事件会触发handle函数,handle函数会调用dispatch来调用你之前用jquery注册的其他回调函数。

handlers:返回用户注册的回调函数队列

fix:修正event参数

special:处理一些特殊的事件,比如onload
focus等等

2、jQuery.Event

这是回调函数中的event参数,这里做了标准化的处理,因此所有的浏览器中的event参数都会保持一致的api

3、封装api

因为有了 event和Event,下面就是封装了各种接口,最终都是调用event中的对应方法来实现的,后面依次定义了这些接口:on, one, off,
trigger。

4、别名:

在event.alias中定义了一堆别名,本质只是一个快捷方式而已,比如click其实就是on("click"),hover就是mouseenter和mouseleave

学习Web前端、java确实会遇到困难,有时候只需要别人点一下,自己就通了。这个微信号:858568103里有大咖、资料,在遇到难题时可以点拨一下大家。

时间: 2024-10-29 19:10:18

Jquery 实现原理 :event源码结构的相关文章

jQuery源码分析-03构造jQuery对象-源码结构和核心函数

3. 构造jQuery对象 3.1源码结构 先看看总体结构,再做分解: (function( window, undefined ) { var jQuery = (function() { // 构建jQuery对象 var jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context, rootjQuery ); } // jQuery对象原型 jQuery.fn = jQuery.

jQuery源码分析:源码结构与核心函数

jQuery源码分析-03构造jQuery对象-源码结构和核心函数 jQuery.fn和jQuery.prototype区别

jquery 源码结构学习

最近想要了解一下jquery 库是怎样实现的,源码结构如何.通过查看资料知道了,jquery源码整体结构如下所示,平时用到的例如$.ajax()形式的方法主要是通过jq.extend({})中定义的方法属性得到的,形如$("div").css()方法是通过jq.fn.extend({})拓展得到. (function(window,undefined){ var jq = function(selector,content){ return new jq.fn.init(selecto

jQuery.lazyload使用及源码分析

前言: 貌似以前自己也写过图片懒加载插件,但是新公司使用的是jQuery.lazyload插件,为了更好的运用,自己还是把源码看了遍,分别记录了如何使用, 插件原理,各个配置属性的完整解释,demo实例,源码分析(较简短),源码分析可以配合使用,配置属性,原理进行阅读,如需转载,请注明出处 博客园 华子yjh 一.如何使用 // 最简单的使用,不带参数 $('img').lazyload(); // 带参数(配置对象),下面配置对象中的各个属性值都是默认的 $('img').lazyload({

jquery 2.1.0 源码

/*! * jQuery JavaScript Library v2.1.0 * http://jquery.com/ * * Includes Sizzle.js * http://sizzlejs.com/ * * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors * Released under the MIT license * http://jquery.org/license * * Date: 2

转载Aaron ---- jQuery 2.0.3 源码分析core - 选择器

jQuery 2.0.3 源码分析core - 选择器(02) 声明:本文为原创文章,如需转载,请注明来源并保留原文链接Aaron,谢谢! 打开jQuery源码,一眼看去到处都充斥着正则表达式,jQuery框架的基础就是查询了,查询文档元素对象,所以狭隘的说呢,jQuery就是一个选择器,并这个基础上构建和运行查询过滤器! 工欲善其事,必先利其器,所以先从正则入手 我们来分解一个表达式 // A simple way to check for HTML strings // Prioritize

Cocos2d-X3.0 刨根问底(七)----- 事件机制Event源码分析

这一章,我们来分析Cocos2d-x 事件机制相关的源码, 根据Cocos2d-x的工程目录,我们可以找到所有关于事件的源码都存在放在下图所示的目录中. 从这个event_dispatcher目录中的文件命名上分析 cocos2d-x与事件相关的类一共有四种, Event, EventListener,EventDispatcher, Touch分别为 事件,事件侦听器,事件分发器,触摸 我们先从Event类开始. 打开CCEvent.h文件 /** * Base class of all ki

轻量级富文本编辑器wangEditor源码结构介绍

1. 引言 wangEditor——一款轻量级html富文本编辑器(开源软件) 网站:http://www.wangeditor.com/ demo演示:http://www.wangeditor.com/wangEditor/demo.html 下载(github):https://github.com/wangfupeng1988/wangEditor QQ群:164999061 从我发布wangEditor到现在,大概有七八个月了,随着近期增加的插入视频,表情,地图这三个功能,目前为止基本

【Spring】Spring&WEB整合原理及源码分析

表现层和业务层整合: 1. Jsp/Servlet整合Spring: 2. Spring MVC整合SPring: 3. Struts2整合Spring: 本文主要介绍Jsp/Servlet整合Spring原理及源码分析. 一.整合过程 Spring&WEB整合,主要介绍的是Jsp/Servlet容器和Spring整合的过程,当然,这个过程是Spring MVC或Strugs2整合Spring的基础. Spring和Jsp/Servlet整合操作很简单,使用也很简单,按部就班花不到2分钟就搞定了