老是忘,还是记下来算了
jQuery.cache为全局cache
每个jquery对象有一个缓存对象
在第一次调用$('').data(...)时会为此对象生成一个缓存id
elem[ internalKey ] = id = ++jQuery.uuid;internalKey为jquery加载时生成的唯一ID
jQuery.cache[id]可以得到对应元素的cache
cache的结构:
cache={
data:{},//$('').data('a','abc')这个a就放在data里面
events:{},//事件存放在这,如 click:[{handlerObj},{handlerObj}]
handle:function(){}//这个是事件触发时执行的函数,由它是调用dispatch并执行注册的事件函数
//element.addEventListener或attachEvent中放的是它
};
data: function( elem, name, data, pvt /* Internal Use Only */ )
在传了data时,将值设到cache.data中,在没传时基本就是取events与handle了
事件机制:
on: function( types, selector, data, fn, /*INTERNAL*/ one ) 用它来注册事件
$('#abc').on({
'click':function(){},
'mousedown':function(){}
},'.btn',[1,2,3])
一般情况下$('#abc').on('click',function(){})
注册事件
向cache.data[type]中添加handleObj,注册的函数会被加上一个属性guid用于删除事件
删除事件remove: function( elem, types, handler, selector ) {
遍历cache.data[type]中的handleObj,如果handeObj.handler.guid==handler.guid差不多就可以删了
trigger事件:trigger: function( event, data, elem, onlyHandlers )
$('#abc').on('my',function(){})
$('#abc').trigger('my')
根据类型构造一个event并找出对应的cache.handle,触发事件,进入dispatch分派具体的handleObj
从dispatch方法中可以看出:
给selector的好处是将事件注册在先辈上,可以减少事件源
原理很简单,就是event.target获取事件源,然后向上递归,看有没有先辈元素与selector相匹配
在给定data时必须用完整的注册形式,其实这个data没什么用,它是放在handleObj中,在事件触发时在event中带回来
trigger时给定的data(数组)会加上event之后一同作为参数给注册函数,即handler.apply(element,data)
相关推荐
jquery.event.drag jquery拖动插件
JavaScript+jQuery Mobile+Node.js跨平台网页设计附书源码,供大家学习用。
Eclipse 常用快捷键 元素事件列表说明 JQuery Effects , JQuery Traversing , JQuery Selectors , JQuery CSS 方法说明
jquery.event.drag-2.0.rar
node.js ,jquery_mobile.js,node.js ,jquery_mobile.js
新的jQuery Event Inspector面板。 舒适地检查您的jQuery代码,并查看其回调事件列表。 此插件在“元素”面板上添加了一个新的侧边栏-jQuery Callback Events侧边栏-显示了所选元素的事件处理程序,包括正在发生或...
博客里React+jQuery+Node示例的源码下载。可以直接在node5.3里运行。
教你使用jQuery, Node.js和MongoDB开发移动App
JQuery读书笔记–Event属性说明 JQuery事件中的Event属性是经常性的被忽略的。大多数时间你的确不怎么用它,但有些时候它还是它还是有作用的。如获知触发时用户的环境(是否按了shift etc)。每个浏览器对event都有...
Jquery中dialog属性小记,使用jquery dialog的朋友可以参考下。
jquery.mobile.event jquery.mobile.event jquery.mobile.event
jquery.event.drop-2.0.zip
jquery-3.7.0.min.js(jQuery下载)jquery-3.7.0.min.js(jQuery下载)jquery-3.7.0.min.js(jQuery下载)jquery-3.7.0.min.js(jQuery下载)jquery-3.7.0.min.js(jQuery下载)jquery-3.7.0.min.js(jQuery下载)...
另外,在jQuery 1.7中移除了event.layerX和event.layerY这两个属性,以及jQuery.isNaN()和jQuery.event.proxy()方法,分别用event.originalEvent.layerX and event.originalEvent.layerY、jQuery.isNumeric()、...
ZIP中包函2个文件:jquery1.12.4 jquery1.12.4.min jquery 1.12.4
对于事件的操作无非是addEvent,fireEvent,removeEvent这三个事 件方法。... Jquery提供了一个 event的包裹,这个相对于其它的lib提供的有点简单,但是足够使用。 代码如下: //对事件进行包裹。 fix : function(e
CoffeeScript is a little language that compiles into JavaScript. Underneath that awkward Java-esque patina, JavaScript has always had a gorgeous heart. CoffeeScript is an attempt to expose the good ...
使用node,做服务器,然后前端就是jquery,完成的毕业设计的系统.zip使用node,做服务器,然后前端就是jquery,完成的毕业设计的系统.zip使用node,做服务器,然后前端就是jquery,完成的毕业设计的系统.zip使用node,做...
运用Jquery Mobile与后台通信的一个例子,通过Jquery Mobile解决手机跨平台问题
本系列课程第一季专注于WEB前端工程师必备技能H5、C3、JS、jQuery和拓展技能Node.js、AngularJS、MongoDB等技术的实战训练,囊括了前端程序员所必备的技能集合。 通过数十个配套案例讲解基础知识,通过两个实战项目...