老是忘,还是记下来算了
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 插件深度解析与应用实践》 在Web开发中,用户交互体验的提升是关键之一,其中拖放(Drag and Drop)功能尤为常见,如文件管理、元素布局等。jQuery作为广泛使用的JavaScript库,提供了丰富的...
JavaScript,jQuery Mobile和Node.js是现代网页开发中的关键技术,它们各自扮演着不同的角色,而将它们结合起来可以创建出强大的、跨平台的网页应用。在这个项目中,我们看到这三个技术的融合,为开发者提供了从桌面...
对于事件的操作无非是addEvent,fireEvent,removeEvent这三个事 件方法。... Jquery提供了一个 event的包裹,这个相对于其它的lib提供的有点简单,但是足够使用。 代码如下: //对事件进行包裹。 fix : function(e
《jQuery Event Drop 2.0:深入理解与应用》 jQuery Event Drop 2.0 是一个专门用于处理拖放事件的插件,它为开发者提供了更丰富的交互功能,使得在网页上实现动态拖放操作变得更为简单。在这个压缩包文件"jquery....
除了这些基本事件,`jquery.event.drag-2.0`还提供了一些高级特性,如阻止默认的文本选择行为、处理拖放元素的碰撞检测以及与其它元素的交互。这些特性使得在网页上创建功能丰富的拖放解决方案变得更加容易。 在...
此外,Node.js还可以与数据库如MongoDB、MySQL等进行交互,构建强大的后端服务。 jQuery Mobile则主要关注前端用户体验,尤其是移动设备上的交互设计。它提供了一套完整的UI组件和交互效果,如可滚动的列表视图、...
在现代Web开发中,用户对页面...通过学习和理解这些代码,你可以更深入地了解如何将jQuery与Node.js结合,实现一个高效的滚动分页插件。在实际项目中,根据具体需求进行调整和优化,以适应不同的数据结构和用户界面。
新的jQuery Event Inspector面板。 舒适地检查您的jQuery代码,并查看其回调事件列表。 此插件在“元素”面板上添加了一个新的侧边栏-jQuery Callback Events侧边栏-显示了所选元素的事件处理程序,包括正在发生或...
React、jQuery 和 Node.js 是三个在 Web 开发领域广泛应用的技术栈。这个压缩包中的源码提供了结合这三者的示例,旨在帮助开发者了解如何在实际项目中整合这些技术。 React 是一个由 Facebook 开发的 JavaScript 库...
JQuery读书笔记–Event属性说明 JQuery事件中的Event属性是经常性的被忽略的。大多数时间你的确不怎么用它,但有些时候它还是它还是有作用的。如获知触发时用户的环境(是否按了shift etc)。每个浏览器对event都有...
《iQuery JavaScript与CSS开发入门经典》包含极富帮助的指南和紧贴实际的练习,使读者能在实际中轻松驾驭iQuery,并收到事半功倍的神奇效果。 内容简介 本书浓墨重彩地描述iQuery的API及iQuery框架的所有基础知识,...
除此之外,`vclick`事件是jQuery Mobile为模拟鼠标点击而设计的,它在触摸屏上与`click`事件相似,但通常响应更快。`vmouseover`和`vmouseout`则是触摸设备上的悬停事件,它们在元素上方触摸开始和结束时触发。 在...
**jQuery Mobile 与后台通信详解** 在移动应用开发中,jQuery Mobile(JQM)是一个非常流行的前端框架,它专门设计用于构建响应式、触摸友好的移动Web应用。JQM简化了用户界面的设计,并提供了丰富的组件,如页面、...
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 ...
在jQuery中,`.event.fix()`方法是一个非常重要的工具,它能够将不同浏览器的原生事件对象转换成jQuery封装的统一的事件对象。当你使用jQuery处理事件时(例如使用`.click()`,`.mouseover()`等方法绑定的事件),...
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()、...
包括HTML的基本结构和常用标签、CSS的样式设置与布局技巧、JavaScript的核心语法和动态交互功能、jQuery库的使用、Node.js的服务器端开发、Ajax的异步数据请求以及Vue.js框架的应用。每个部分都配有详细的笔记和示例...