读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>

  

持续更新...

posted on   snandy  阅读(3493)  评论(6编辑  收藏  举报

编辑推荐:
· .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语句:使用策略模式优化代码结构
< 2011年6月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 1 2
3 4 5 6 7 8 9

统计

点击右上角即可分享
微信分享提示