jQuery .on()和.delegate()在iPad上不起作用 [英] jQuery .on() and .delegate() doesn't work on iPad

查看:227
本文介绍了jQuery .on()和.delegate()在iPad上不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果您在桌面上试用此代码段,一切正常。
每当您在 iPad 上试用它时,它都不会做任何事情。



< pre class =snippet-code-js lang-js prettyprint-override> $('body')。on('click','#click',function(){alert(This alert)将不适用于iPad);});

  div {font-size:24px; }  

 < script src =https:// ajax .googleapis.com / ajax / libs / jquery / 2.1.1 / jquery.min.js>< / script>< div id =click>点击此处< / div>  



简单 .click()处理程序工作,但它不是我想要的。这同样适用于 .delegate(); .live()



这是一个bug还是什么?

解决方案

这是一个Safari移动bug /功能:点击事件不会泡泡一直到身体。



添加 onclick =是一个已知的解决方法,但恕我直言它更容易将您的听众附加到< body> 的第一个孩子。



请参阅: http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html


If you try this snippet on desktop, everything works.
Whenever you try it on iPad, it won't do anything.

$('body').on('click', '#click', function() {
    alert("This alert won't work on iPad");
});

div { 
  font-size: 24px; 
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="click">Click here</div>

Simple .click() handler works, but it isn't what I want. The same applies for .delegate(); and .live()

Is it a bug or something?

解决方案

It's a Safari mobile bug/feature : click events won't bubble all the way up to body.

Adding onclick="" is a known workaround, but IMHO it's easier to attach your listener on a first child of <body>.

See: http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html

这篇关于jQuery .on()和.delegate()在iPad上不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆