jQuery 1.4中的事件委托

前端之家收集整理的这篇文章主要介绍了jQuery 1.4中的事件委托 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有以下代码

$("ul.relatedAlbums li").hover(function(){
    $(this).css({fontWeight:"bold"});
},function(){
    $(this).css({fontWeight:"normal"});
});

我听说过有关事件委托和速度表现的好事.我想象使用jQuery的委托方法,它会像这样:

$("ul.relatedAlbums").delegate("li","hover",function(){
    $(this).css({fontWeight:"bold"});
},function(){
    $(this).css({fontWeight:"normal"});
});

但是在阅读文档时,它说这种方法就像使用live事件.而且我一直都知道使用实时事件效率低下.那么,有人可以启发我实现最佳实践吗?

最佳答案
只需指出,.delegate()目前实际上在内部使用.live(),而贬低.live()则意味着需要付出一些框架努力.

除非您要向页面动态添加元素,否则可以将其用作第一个示例.当您有一个交互式页面时,.live()和.delegate会在其中进行更改,其中您要更改其中包含的元素.

编辑:反对者:从jQuery论坛:
http://forum.jquery.com/topic/depreciating-live
引用此代码

委托:function(选择器,类型,数据,fn){
        返回this.live(类型,fn,选择器);
    },

我的观点是,如果合适的话,特定的选择器将限制事件,仅选择.delegate()并不总是最好的,并且没有全局“总是这样做”.否则,为什么不对最好的所有方法都使用.delegate()呢?

什么时候委托合适?当选择器DOES具有公共父级时,例如OP描述的常用li,或者需要通过.delegate()绑定到公共父级时.不适用于单数形式的#selector,但值得检查存在多个或动态放置元素的类或元素选择器.

猜你在找的jQuery相关文章