jQuery .on()和.delegate()在iPad上不起作用
如果您在桌面上尝试此代码段,一切正常。
每当你在iPad上试用它时,它都不会做任何事情。
$('body').on('click', '#click', function() { alert("This alert won't work on iPad"); });
div { font-size: 24px; }
Click here
简单的.click()
处理程序可以工作,但它不是我想要的。 这同样适用于.delegate();
和.live()
这是一个错误还是什么?
这是一个Safari移动bug /function:点击事件不会一直冒泡到身体。
添加onclick=""
是一个已知的解决方法,但恕我直言,更容易将您的监听器附加到的第一个子
。
请参阅: http : //www.quirksmode.org/blog/archives/2010/09/click_event_del.html
将iOS上的正文光标样式更改为“指针”,一切都会完美运行。 您不必在要点击的每个元素上添加onclick =“”…
Click here
我知道你现在在想什么:“WTF!”。
我不确定为什么它不起作用,它可能是一个错误,但有一个很好的解决方法。 只需将onclick=""
到您委派的div中,它就能完美运行
Click here
小提琴
在iOS上没有光标样式没有事件冒泡 。
所以在CSS中你需要添加cursor: pointer;
对元素。
$('body').on('click', '#click', function() { alert("This alert won't work on iPad"); });
#click { font-size: 24px; cursor: pointer; }
Click here
我在http://www.danwellman.co.uk/fixing-jquery-click-events-for-the-ipad/找到了解决方案
做以下方法:
var isIPad = function() { return (/ipad/i).test(navigator.userAgent); }; var isIPhone = function() { return (/iphone/i).test(navigator.userAgent); }; var isIPod = function() { return (/ipod/i).test(navigator.userAgent); };
以及绑定click-event-handler的位置:
var eventName = (isIPod() || isIPad() || isIPhone()) ? "touchstart" : "click"; // if you are using jquery-mobile eventName = (isIPod() || isIPad() || isIPhone()) ? "touchstart" : "vclick"; $(".selector").bind(eventName, function(e) { //do something here }); // or $(document).on(eventName, ".selector", function(e) { //do something here });
而已。
我在iPhone 5C及以下版本面临此问题。
这对我有用:
body { cursor:pointer; }
我有一个问题,我在html主体前面添加了一条消息。 我发现[ jQuery’Click’事件上的这个问题在iOS Safari上不起作用?
我用过这个
$('body').on('click touchstart', 'someselect', function(){})
它适用于iPhone 4S和iPhone 5S