大师推荐的经典方法(持续更新)

目录:

1, John Resig自己获奖的addEvent/removeEvent方法;
2, Jeremy Keith的load方法;
3, Dean Edwards修改版的addEvent/removeEvent方法。



1, 下面是JQuery之父推荐的添加移除事件方法。

/*
*obj 要绑定事件的对象
*type 事件类型,指"click", "load", "submit", "mouseover"等
*fn 函数名
*/
function addEvent( obj, type, fn )
{
if ( obj.attachEvent )
{
obj['e' + type + fn] = fn;
obj[type + fn] = function()
{
obj['e' + type + fn]( window.event );
}
obj.attachEvent( 'on' + type, obj[type + fn] );
}
else
obj.addEventListener( type, fn, false );
}
/*
*obj 要删除事件的对象
*type 事件类型,指"click", "load", "submit", "mouseover"等
*fn 函数名
*/
function removeEvent( obj, type, fn )
{
if ( obj.detachEvent )
{
obj.detachEvent( 'on' + type, obj[type + fn] );
obj[type + fn] = null;
}
else
obj.removeEventListener( type, fn, false );
}


//addEvent( document.getElementById('foo'), 'click', doSomething );


我都没怎么翻译,大家可以看原文:http://ejohn.org/apps/jselect/event.html。

2, 下面是在Dom Scripting书上介绍的添加启动事件的方法addLoadEvent(func)。

<script language="javascript" type="text/javascript">

function addLoadEvent(func)
{
var oldonload = window.onload;

if (typeof window.onload != 'function')
{
window.onload = func;
}
else
{
window.onload = function()
{
oldonload();
func();
}
}
}

function event1() {alert("function 1!");}
function event2() {alert("function 2!");}
function event3() {alert("function 3!");}
function event4() {alert("function 4!");}
function event5(msg) {alert(msg)}

addLoadEvent(event1);
addLoadEvent(event2);
addLoadEvent(event3);
addLoadEvent(event4);
//参数传递的方式
addLoadEvent(function(){ event5('myArgument') });

</script>


3, 周六借了本《Pro JavaScript Techniques》来看,没有想到John Resig大大推荐了Dean Edwards的addEvent()方法,而没推荐自己更精简的作品,他这样评价Edwards的addEvent()的:
1, 可以在所有浏览器中工作,就算是古老得无任何支持的浏览器;
2, this关键字可在所有的绑定函数中使用,指向的是当前元素;
3, 中和了所有防止浏览器默认行为和阻止事件冒泡的各种浏览器特定函数;
4, 不管浏览器类型,事件对象总是作为第一个对象传入;
5, 唯一缺点是仅工作在冒泡阶段(因为深入使用事件绑定的传统方法)。
6, addEvent/removeEvent函数如此强大,绝对没有任何理由不在你的代码中使用。


而Dean Edwards这样说:
My solution is very different.

* it performs no object detection
* it does not use the addeventListener/attachEvent methods
* it keeps the correct scope (the this keyword)
* it passes the event object correctly
* it is entirely cross-browser (it will probably work on IE4 and NS4)
* and from what I can tell it does not leak memory

下面是Dean Edwards的addEvent/removeEvent函数:

// http://dean.edwards.name/weblog/2005/10/add-event/

function addEvent(element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else {
// 为每一个事件处理函数赋予一个独立的ID
if (!handler.$$guid) handler.$$guid = addEvent.guid++;
// 为元素建立一个事件类型的Hash表
if (!element.events) element.events = {};
// 为每对元素/事件建立一个事件处理函数的Hash表
var handlers = element.events[type];
if (!handlers) {
handlers = element.events[type] = {};
// 存储已有的事件处理函数(如果已存在一个)
if (element["on" + type]) {
handlers[0] = element["on" + type];
}
}
// 在Hash表中存储该事件处理函数
handlers[handler.$$guid] = handler;
// 赋予一个全局事件处理函数来处理所有工作
element["on" + type] = handleEvent;
}
};
// 创建独立ID的计数器
addEvent.guid = 1;

function removeEvent(element, type, handler) {
if (element.removeEventListener) {
element.removeEventListener(type, handler, false);
} else {
// 从Hash表中删除事件处理函数
if (element.events && element.events[type]) {
delete element.events[type][handler.$$guid];
}
}
};

function handleEvent(event) {
var returnValue = true;
// 获取事件处理对象(IE使用全局的事件对象)
event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
// 获取事件处理函数Hash表的引用
var handlers = this.events[event.type];
// 依次处理每个事件处理函数
for (var i in handlers) {
this.$$handleEvent = handlers[i];
if (this.$$handleEvent(event) === false) {
returnValue = false;
}
}
return returnValue;
};
//增加一些IE事件对象的缺乏的方法
function fixEvent(event) {
// 增加W3C标准事件方法
event.preventDefault = fixEvent.preventDefault;
event.stopPropagation = fixEvent.stopPropagation;
return event;
};
fixEvent.preventDefault = function() {
this.returnValue = false;
};
fixEvent.stopPropagation = function() {
this.cancelBubble = true;
};
科研绘图实战【26】论文图表优化技巧(持续更新) 本文系统分享了科研论文图表的优化技巧,旨在帮助研究者将图表从“能看”提升至“好看”。文章详细介绍了Excel、PowerPoint、draw.io和Python等工具在不同场景下的应用,并深入探讨了信息分层、配色字体选择、图表标注等核心优化方法,特别强调了消融实验图、性能对比图等经典图表的实战优化策略,以提升论文的专业性和视觉传达效果。 阅读详情

相关推荐

ChatBI实战:如何用Vanna和WrenAI搭建企业级智能问数系统(附避坑指南)

本文详细介绍了如何利用Vanna和WrenAI搭建企业级智能问数系统(ChatBI),解决多源异构数据整合、语义理解准确率和系统性能安全等核心挑战。通过实战案例和优化策略,展示了这一组合方案在提升查询效率、实现业务自主分析和动态探索式分析方面的显著优势,特别适合企业级数据查询需求。

weixin_29047919的博客 399

C++书籍推荐(持续更新...)

C++从入门到放弃,到大师,到入土的书籍推荐

A_cainiao_A 5634

简单的服务器取证

记一次入门服务器取证——药品直销网,涵盖旧版本宝塔、静态IP的配置更改、代码的理解

m0_74559567的博客 3756

大模型之路,从菜鸟到模型大师只需要一步

从菜鸟成长为模型大师,需要具备扎实的基础知识、深入的理解能力、丰富的实践经验和持续学习的热情。在这个过程中,你需要不断积累经验,勇于尝试,不断挑战自己。只有这样,你才能在大模型领域取得成功,成为一名真正的模型大师。在这个充满机遇和挑战的时代,大模型技术正以前所未有的速度发展。如果你对大模型技术充满热情,渴望在这个领域取得成功,那么,现在就是最好的时机。那么,我们该如何学习大模型?作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。至于能学习到多少就看你的学习毅力和能力了。

2401_84494441的博客 1149

别再只用固定线了!聊聊Android车机‘快速倒车’与‘正常倒车’的UI与数据流核心差异(附动态轨迹线实现原理)

本文深度解析Android车机中快速倒车与正常倒车的核心差异,探讨从内核级视频流水线到动态轨迹线的技术实现。快速倒车通过内核直接操作FrameBuffer实现2秒内响应,而正常倒车则支持多传感器数据融合与动态UI元素。文章还分享了动态轨迹线的算法实现与性能优化技巧,帮助开发者打造极致的倒车体验。

weixin_42550597的博客 253

银行数据仓库体系实践(3)--数据架构

狭义的数据仓库数据架构用来特指数据分布,广义的数据仓库数据架构还包括数据模型、数据标准和数据治理。即包含相对静态部分如元数据、业务对象数据模型、主数据、共享数据,也包含相对动态部分如数据流转、ETL、整合、访问应用和数据全生命周期管控治理。 数据架构层面通过数据分类、分层部署等手段,从非功能性视角将数据合理布局。通过整体架构管控和设计,支持业务操作类和管理分析类应用(系统),满足业...

acumen_leo的博客 7010

数学分析书推荐

数学分析 数学分析是数学系最重要的一门课,经常一个点就会引申出今后的一门课,并且是今后数学系大部分课程的基础。也是初学时比较难的一门课,这里的难主要是对数学分析思想和方法的不适应,其实随着课程的深入会一点点容易起来。数学系的数学分析讲三个学期共计15学分270学时。将《数学分析》中较难的一部分删去再加上常微分方程的一些最简单的内容就是中国非数学专业的《高等数学》,或者叫高数部分。 记住

CV菜鸟的学习之路 2万+

vCenter6.7证书过期导致503报错的全面修复指南:从STS证书更新到SSL信任修复

本文详细解析了VMware vCenter 6.7因STS证书过期导致503服务不可用错误的根本原因,并提供了从诊断、更新STS证书到修复SSL信任链的完整解决方案。通过命令行工具检查证书状态,使用官方脚本更新过期STS证书,并利用lsdoctor工具修复深层SSL信任问题,最终指导用户使用certificate-manager彻底重置所有证书,帮助管理员快速恢复vCenter服务。

pz890123的博客 1293

推荐5款快速制作完美PPT的办公软件

还有一个小缺点哦,就是演示文本的一页是不能复制粘贴的,而且整个演示文本在文件夹中也是不能复制粘贴的,要是想要复制一个副本出来的小伙伴,切记,切记,一定要用另存为的方式哦,不然直接在文件夹复制的文件就会出现如下提示哈。它集成了我们国内很多文件的模板,比如通知、倡议书等,都可以套用,比较符合中国人应用习惯,WPSOffice是由金山软件股份有限公司自主研发的一款办公软件套装,可以实现办公软件最常用的文字、表格、演示等多种功能。Focusky是一款软件,它叫做动画演示大师,主要的作用是制作动画演示文本。

zyy26的博客 4704

一文吃透 SAP HANA SDA:把分散数据当作本地数据来用的那把钥匙

摘要:SAP HANA SDA(Smart Data Access)技术详解:150字精要 SAP HANA SDA是一种数据虚拟化技术,允许在不复制数据的情况下访问远端数据源。核心功能包括: 通过Remote Source定义连接配置 创建Virtual Table作为本地代理 支持谓词下推优化查询性能 与SDI技术协同工作扩展数据集成能力 典型应用场景包括: 跨系统联邦查询 冷热数据分层管理 混合云数据整合 远程表复制(RTR)实现近实时数据同步 实施要点: 需关注适配器能力差异 合理运用查询下推优化

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 320

微信小程序 - 最新图片组拖拽排序更换位置功能,类似微信朋友圈九宫格图片的拖动排序效果,微信小程序实现九宫格图片拖拽调换位置,小程序详细实现图像拖曳拖动切换位置排序功能(详细示例代码,一键复制开箱即用

微信小程序,wechat,小程序,图片排序,图像排序,九宫格拖拽排序,拖曳,拖动,拖拽,仿微信朋友圈,朋友圈宫格图片排序,微信朋友圈图片拖动排序效果,实现九宫格图片拖拽,图像拖拽排序组件插件,小程序实现拖拽图片切换图片位置,图片拖动互换位置,图像拖拽切换位置,九宫格图片组合拖动排序,交换九宫格图片的位置,小程序上传图片后,如何实现拖拽排序功能,小程序怎么实现图片拖拽排序,微信小程序图片上传,九宫格拖拽组件,选择图片并拖动_微信小程序图片拖拽,微信小程序长按拖拽排序,图像的拖拽移动,多图拖拽排序功能,实现九宫

✅ 精选推荐文章 4453

探秘《统计学习方法》——与李航大师同行的C++实践之旅

探秘《统计学习方法》——与李航大师同行的C++实践之旅 在这个数据驱动的时代,统计学习理论已成为理解和构建智能系统的基石。今天,我们为您推荐一个令人眼前一亮的开源项目——Statistic-Learning-Theory,该项目致力于将李航教授的经典著作《统计学习方法》中的核心算法以C++的形式生动展现,让理论照进实践,为开发者提供了一扇深入理解并应用这些强大理论的窗口。 项目介绍 Statist...

gitblog_00060的博客 401

基于计算机视觉的无人便利店技术:从算法到部署的系统化实战指南

摘要:本文系统介绍了基于计算机视觉的无人便利店技术方案,提出"商品检测-跟踪-动作识别-防损-结算"五段式流水线架构。详细阐述了YOLOv8-Seg商品检测、OC-Sort多目标跟踪、3D-CNN+ST-GCN动作识别等核心算法实现,并完成NVIDIA Jetson Xavier NX边缘端的优化部署。通过TensorRT量化、DeepStream加速等技术手段,系统在保持94.7%动作识别准确率的同时,将漏单率降至0.8%,单店云端算力成本较行业平均降低84%。所有代码已开源,可直接应

博客 624

Python初识 — 学习资源整理(持续更新)

Python学习相关资源整理   我列举我在学习Python时所用到的书籍教材,博客教程,代码教程,项目教程,视频教程; (1)书籍 1)Python程序设计 [An Introduction to Programming Using Python] [美] 戴维 I.施奈德(David I. Schneider) 著,车万翔 译 评价:经典入门,机械工业出版社,计算机科学黑皮书; 需要电子版的可...

极客-多重人格递归 531

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

前端之路,与大师同行:不容错过的技术大牛博客精选

前端程序员在不断提升自己的过程中,需要关注多个方面,包括技术能力的提升、职业素养的增强以及持续学习的态度。以下是一些具体的建议:深入学习基础技术:关注新技术和趋势:实战项目经验:代码质量和性能优化:团队合作和沟通能力:持续学习和自我提升:解决问题的能力:设定学习目标:制定学习计划:实践和应用:反思和总结:《CSS世界三部曲》(包括《CSS世界》、《CSS选择器世界》、《CSS新世界》)《JavaScript高级程序设计(第4版)》《JavaScript权威指南(犀牛书)》《ES6标准入门(第三版)》《高性能

weixin_45274678的博客 1576

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

机器学习资源汇总(持续更新)

因为最近忙着看论文,自己的基础又不是很好,所以需要参考大量资料来让自己理解论文的内容。看了很多博文大多数都讲解的比较粗略,或是直接搬运了其他文章,导致逻辑混乱,并不能很好地让我理解一些概念,不过还是有一些大神创作的文章可谓经典中的经典,深入浅出,非常清晰有条理,让我获益颇多。在这里简单整理了一下,并且以后再看到相关的优质资源会不定期更新本文~

zhurouwan的博客 3963

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

显存不够怎么办?DaSiWa-MiniMax-H3-Hybrid 本地部署硬件配置与性能优化指南

DaSiWa-MiniMax-H3-Hybrid 是基于 MiniMax H3 视频生成模型的蒸馏(Distilled)权重镜像,提供 4 步与 8 步两个 turbo 版本,可在 ComfyUI 中实现文生视频、图生视频、首尾帧视频及音视频同步生成。本指南为你梳理本地部署的显存/硬件需求,并给出一整套"显存不够"时的优化技巧与推荐采样参数,新手也能照着配置跑起来。 ## 🎬 先搞清楚:DaS

gitblog_00335的博客 417

10年资深架构师推荐21本技术好书

在专栏《从0开始学架构》更新的时候,很多同学留言希望我推荐一些书籍可以课后继续学习,正好我自己也是一个爱读书的人,最近7 ~ 8年,平均每年读书超过50本,因此今天就从我读过的书籍中选择一些让我印象非常深刻的推荐给你。我把这些书分为成长、技术和业务三个方面,因为架构师本身就是一个比较综合的职位,对综合技能要求很高,需要你从各方面提升自己。每本书我习惯用“一句话推荐”,虽然显得比较“简短”,但我认为...

nostrud ipsum6 787

豆瓣9分以上,全球畅销,影响科技和历史进程的20本数学经典!

日用之繁,无处不用数学,专业数学书籍作为知识传播发展的重要媒介,对个人发展、科技进步和社会进步都有着不可替代的作用。“图灵数学经典”系列图书都是经过时间检验,受到国内外教师、学生广泛认可,广为流传的经典著作,从入门到大师经典都有涵盖,备受数学圈称赞,检查一下你的书架上还差哪一本吧!追更的读者也不要着急!预告一下,明年更有Gilbert Strang教授《线性代数及其应用》, James Stewa...

图灵教育 1180

成为DevOps大师,需要哪些技能?

关注云加社区提升技术能力学习云计算,AI,大数据,小程序开发等技术助你一臂之力 成为技术大牛DevOps目前非常火爆,我认识的大多数朋友、同事和高级开发人员都在努力成为DevOps的工...

QcloudCommunity的博客 335

2021年全面攻读人物传记【书单】(持续更新)

我把2021年作为执念斩长河全面攻读人物传记系列,目标是攻读52本人物传记,但是有些时候量比较大,可能看得比52本多,也可能看得比较少。俗话说得好,人本孤独,不看点书,你难道想让我相思吗?如果有啥敏感词,还是希望通过,此篇博文绝壁积极向上正能量,没有任何不良动机,天地可鉴!而且我将其隶属于《程序人生》,希望一定通过审核!

执念斩长河 847

工业自动化大全(目录)持续更新中

《工业自动化大全》目录涵盖了工业触摸屏和显示屏两大领域的技术详解。触摸屏部分系统介绍了电阻式和电容式(PCAP)两种主流技术,包括发展历史、工作原理、控制器选型(涵盖Elo、AMT、Microchip等主流品牌)以及维修指南。显示屏部分详细解析了工业显示屏的结构组成,重点介绍了背光模组、驱动电路及LVDS/eDP/MIPI-DSI三种接口技术。该系列文章为工业自动化领域提供了从技术原理到实际应用的完整知识体系,特别适合工业设备维护和自动化系统设计人员参考。

938

戴森球计划工厂蓝图完全指南:从零到大师的自动化建造秘籍

戴森球计划作为一款硬核太空工厂建造游戏,其复杂的自动化系统常常让新手玩家望而却步。面对数以百计的建筑、材料和科技树,如何高效规划工厂布局成为最大的挑战。FactoryBluePrints蓝图仓库正是为解决这一痛点而生——这是一个由社区精心整理的戴森球计划**工厂蓝图**宝库,汇集了数千个经过优化的生产布局方案,让你从零开始快速构建星际工厂帝国。 ## 为什么你需要这个蓝图仓库? 在戴森球计划中

gitblog_00727的博客 621

Python 100天从新手到大师

Python - 100天从新手到大师 作者:骆昊 最近有很多想学习Python的小伙伴陆陆续续加入我们的交流群,目前我们的交流群人数已经超过一万人。我们的目标是打造一个优质的Python交流社区,一方面为想学习Python的初学者扫平入门过程中的重重障碍;另一方为新入行的开发者提供问道的途径,帮助他们迅速成长为优秀的职业人;此外,有经验的开发者可以利用这个平台把自己的工作经验无偿分享或有偿...

一棹春风一叶舟,一纶茧缕一轻钩 562

LLM学习必读书单:从入门到精通,看完你就是LLM大师了!!

如果你想深入了解大模型领域,无论是为了学术研究还是实际应用,选择合适的书籍是非常重要的。以下是精选的八本大模型相关书籍,涵盖了从基础理论到高级实践的内容,可以帮助你构建全面的知识体系。

Z4400840的博客 1310

戴森球计划终极蓝图库:3000+工厂设计让你秒变建造大师

还在为戴森球计划的复杂工厂布局头疼吗?面对错综复杂的传送带、混乱的生产线,你是不是经常感到无从下手?别担心,现在有了FactoryBluePrints这个开源蓝图库,一切都变得简单了!这个精心整理的戴森球计划蓝图仓库汇集了全球玩家设计的3000多个工厂布局,从基础材料到戴森球建造,应有尽有。无论你是刚入门的新手,还是想要优化效率的老玩家,这里都能找到完美的解决方案。 ## 🎯 为什么你需要这个

gitblog_00848的博客 938
上一篇: JavaScript的页面记忆--说不尽的“刷新”
下一篇: 页面事件示例与疑问
rush2012
博客等级 码龄14年 2粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值