读jQuery之九(一些瑕疵)
jQuery1.6.1 发布有一段时间了,发现一些冗余代码,列出如下
1,bind 方法,最后一个参数fn是多余的
1 2 3 4 5 6 7 | // Handle object literals if ( typeof type === "object" ) { for ( var key in type ) { this [ name ](key, data, type[key], fn); } return this ; } |
2,注释
1 | // Add which for click: 1 === left; 2 === middle; 3 === right |
应修改为
1 | // Add which for mousedown/mouseup : 1 === left; 2 === middle; 3 === right |
3,data方法,定义了局部变量internalKey,但后续代码仍然沿用jQuery.expando。
1 | var internalKey = jQuery.expando, getByName = typeof name === "string" , thisCache, |
4,jQuery.event.add方法,arguments改为e,apply改为call 更好一些。因为只会传一个参数:事件对象。
1 2 3 4 5 6 7 8 | elemData.handle = eventHandle = function ( e ) { // Discard the second event of a jQuery.event.trigger() and // when an event is called after a page has unloaded return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? jQuery.event.handle.apply( eventHandle.elem, arguments ) : undefined; }; |
5,基于 “勿重复检测浏览器” 原则,jQuery.event.add 以下代码
1 2 3 4 5 6 | if ( elem.addEventListener ) { elem.addEventListener( type, eventHandle, false ); } else if ( elem.attachEvent ) { elem.attachEvent( "on" + type, eventHandle ); } |
应该使用以下来替换
1 2 3 4 5 6 7 8 9 10 11 | jQuery.addEvent = document.addEventListener ? function ( elem, type, handle ) { if ( elem.addEventListener ) { elem.addEventListener( type, handle, false ); } } : function ( elem, type, handle ) { if ( elem.attactEvent ) { elem.attactEvent( "on" + type, handle ); } }; |
事实上,jQuery中已经有了jQuery.removeEvent,却不知为何没有jQuery.addEvent。
jQuery1.6.2
6,attr方法获取style属性时IE6/7/8与IE9/Firefox/Safar/Chrome/Opera值不一致。IE6/7/8中少了分号。如下
1 2 3 4 | < div style="color:red;">test</ div > < script type="text/javascript"> alert($('div').attr('style')); </ script > |
持续更新...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构