Jquery事件委托之Safari

本文介绍了JavaScript中事件委托的概念,通过示例展示了如何利用事件委托处理动态生成元素的事件。特别提到在iOSSafari中的兼容性问题,以及事件委托的优点——避免为新生成的元素重复绑定事件。

var oParent=document.getElementById(“oParent”),oClick=document.getElementById(“oClick”);

Object.prototype.on=function(ev,fn,obj){

var sClass=Object.prototype.toString.call(obj);

if(obj||sClass.indexOf(“HTML”)===-1){//假装判断一下是否需要事件委托

this.addEventListener(ev,function(e){

var e=e||window.event;

if(e.target=obj&&e.type=ev){

fn.call(e.target);//传入目标元素

}

},false);

}else{

this.addEventListener(ev,fn,false);

}

}

document.on(“click”,function(){console.log(this)},oClick);

没有做任何的兼容以及其他处理,只是为了了解原理,大家有什么问题可以留言指出。

事件委托有什么用呢

说这么多东西,到底事件委托有什么用呢?我认为事件委托最大的好处在于,动态生成的元素还会保留原有的事件绑定。

//a点击的时候,ul都会新增一个li,新增的li都有绑定事件

    • 新增li

      看上面的代码,很简单吧,没什么问题吧,除了ios的safari,其他浏览器都能正常的弹出“ok”,一开始想到会不会是什么有地方把冒泡阻止了,但是没有找到,jq的问题?,换了还是不行。正常的绑定(不使用事件委托)没问题,其他想到会不会是jq的bug,如果是jq的bug,那么以前的项目也会有类似的bug,于是到线上去找相关的代码

      test

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值