javascript代码实例教程-livequery源码解读

发布时间:2019-01-29 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-livequery源码解读脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 若干年前,有一天发现,通过js代码创建的htML元素及ajax加载的html,无法被$([selector]).click(function(){...})绑定上事件,于是发现了jQuery的一个插件,livequery,然后就有了下面的这种写法:

 

$("body").livequery("p",function(){

    $( this ).click(function(){

        $(this).after( "<p>Another paragraph!</p>" );

    });

});

或者

 

$("body>p").livequery("click",function(){

    $(this).after( "<p>Another paragraph!</p>" );

});

这么久以来,有需要就这么写,也没有深究过livequery是如何监视dom变化的。最近的项目中大量使用了livequery,但也造成了一个问题,页面时间长了不刷新会变的非常卡,虽然在livequery绑定之前先expire可以缓解这个问题,但这毕竟是个心结,究竟怎么监视dom变化的?难道真如别人所说,定时器?

找到livequery的项目地址https://gIThub.COM/brandonaaron/livequery ,发现作者已经重构了livequery的核心方法,高版本的浏览器通过DOM Mutation对象实现,IE8及以下使用htcPath实现。

重点来了,作者在文档中说,事件绑定功能已经被移除,因为jquery本身的delegation事件绑定已经很完美了。难道jQuery的的delegation可以实现异步dom的事件绑定吗,不对啊,之前试过,不好使啊,jQuery文档也没有对这些进行说明。但经过实验,$(selector).on(childSelector,event,function),这种写法,确实可以。但$(selector).on(event,function)不可以。

详情如下:

 

//不可以

window.onload = function(){

 $("body>p").click(function(){

  $( this ).after( "<p>Another paragraph!</p>" );

 });

};

//不可以

window.onload = function() {

$( "body>p" ).on( "click", function() {

  $( this ).after( "<p>Another paragraph!</p>" );

});

};

//可以

window.onload = function() {

$( "body" ).on( "click","p", function() {

  $( this ).after( "<p>Another paragraph!</p>" );

}); 

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-livequery源码解读全部内容,希望文章能够帮你解决javascript代码实例教程-livequery源码解读所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。