Jquery 在ios上事件委托失效】的更多相关文章

点击通过js遍历出来的列表,跳转页面.点击事件委托在document上, 像这样: $(document).on("click",".nav",function(){  }) 在web和Android上度没问题,能够正常跳转.但是在ios上点击没有任何反应.原因是:ios上事件委托不能绑定在document和ios上,应该绑定在它的其它父级元素上 $.each(dataall,function(i,item){ str += '<div class="…
一.由于某些特殊情况下,需要用到事件委托,比如给动态创建的DOM绑定click事件,这里就需要事件委托(这里就牵扯到:目标元素和代理元素)目标元素:动态创建的元素,最终click事件需要绑定到该元素 代理元素:动态创建的元素的父级元素,或者document,body等. 二.BUG情况 当使用事件委托给[目标元素]添加 click 事件时,如果[代理元素]是 document或body,并且[目标元素]是默认不可点击的(如 div, span 等),此时click事件会失效.如果[目标元素]是可…
jQuery的事件绑定有几个比较优秀的特点: 1. 可以绑定不限数量的处理函数 2. 事件可以委托到祖先节点,不必一定要绑到对应的节点,这样后添加的节点也照样能被处理. 3. 链式操作 下面主要分析事件的委托设计.事件源我们成为委托节点,委托节点委托他的祖先节点替他执行事件处理,这个祖先节点被成为被委托节点. DOM的原生事件将处理绑定在相应的节点上,相应节点触发事件才能执行处理.将事件处理委托给祖先节点,这个事件处理是附加到祖先节点的.那么需要做到的是,原节点触发了事件,想要执行已经附加到祖先…
jquery绑定事件处理函数的方法有好几个,比如:bind(),on(),delegate(),live(). 其中delegate和live都是用on实现的,效果也类似,live好像在1.7版本中已经废弃了. 这里重点看看on的用法: $(el).on( events [, selector ] [, data ], handler(eventObject) ) 如果省略了selector参数,on方法和bind方法效果一样. 如果传递了参数selector,其实就生成了一个“事件委托”. 什…
手机端上的猫腻真是多啊~~~ 此起彼伏! 最近又遇到了 固定定位的底部导航在ios上被弹出去 此时内心1w+个草泥马奔过~~~~~~~~ 直接上解决方案: <div class="main_comment">```````````````````</div> <div class="commentBar">回复框</div> .main_comment{ width: 100%; position: absolute;…
常见场景:页面有多个相同的按钮需要绑定同样的事件逻辑. 如下HTML,实现:点击每个按钮,当它的 data-id不为null的时候输出它的data-id(实际业务中会有更复杂的逻辑) <ul id="parent"> <li class="btn" data-id="1">按鈕1</li> <li class="btn" data-id="2">按鈕2<…
面试被问到ios上的bug,自己提到绑定click事件的bug,但是并没有把问题讲的很清楚,这里再清理一下思路. 这个bug只在IOS上有,包括ihone,ipad,由于ios浏览器都用的safari内核,所以ios浏览器全部中枪. bug描述 在进行事件委托时,如果将未存在于DOM的元素事件直接委托到body上的话,会导致事件委托失效,调试结果为事件响应到body子元素为止,既没有冒泡到body上,也没有被body所捕获.但如果事件是DOM元素本身具有的,则不会触发bug.换而言之,只有元素的…
将事件绑定在父元素上,格式$(父元素).on("事件名称","子元素选择器",function(方法体){}) <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"…
1.注册事件 (1)传统方式注册事件 <body> <button id="b1">请点击</button> <script> var b=document.getElementById("b1"); b.onclick=function(){ alert("hello"); } b.onclick=function(){ alert("你好"); } </script&g…
jQuery的live绑定为什么会在mobile safari上失效呢?其实可以追溯到jQuery里live的实现方式.live的实现方式实际上是通过事件委托机制来实现的,也就是说是通过诸如冒泡的方式在DOM树的相应根节点上绑定事件,这样此结点下的所有节点都会默认绑定了此事件.mobile safari上之所以live会失效就是因为mobile safari可能阻止了事件的冒泡(这里也只是推测,实质的原因还在进一步查找),没有给根节点绑定相应的事件,从而导致了问题的产生. jQuery在mobi…