gpt4 book ai didi

iPad 上未调用 jQuery 单击处理程序

转载 作者:行者123 更新时间:2023-12-03 22:37:36 24 4
gpt4 key购买 nike

我有一个使用 jQuery 的项目和很多动态生成的内容。最左上角的元素上有一个点击处理程序(“初始”分数),它在桌面版 Safari 上运行良好,但在移动版 Safari 上根本不被调用;灰色覆盖层永远不会出现,并且不会采取任何操作。生命值区域(右侧的 172)上的点击处理程序和状态(底部的“添加状态效果”;确认;它出现在肖像上方)也是同样的情况:所有功能都适用于桌面设备,但不适用于移动 Safari。/p>

我已将代码简化为以下内容:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script>
$(function() {
$('#dynamic').click(function() {alert("works")});
$('#dynamic-with-onclick').click(function() {alert("works")});
$('#dynamic-with-dynamic-onclick').click(function() {alert("works")}).attr('onclick', '');
})
</script>
</head>
<body>
<ul>
<li id='static' onclick='alert("works")'>If there's an onclick it's called</li>
<li id='dynamic'>And if there's no onclick the iPad won't see other click events</li>
<li id='dynamic-with-onclick' onclick=''>But if there is one all events are called</li>
<li id='dynamic-with-dynamic-onclick'>And if we add one everything works</li>
</ul>
</body>
</html>

更新

现在看来,这比 10 个月前我最初问这个问题时要简单得多;使用现代 Mobile Safari,所有点击处理程序都将正常注册。因此,继续使用 $(...).click(function() {})!

最佳答案

我们可以做一些黑客的事情,只需将 onclick 添加到我们想要可点击的任何内容中。但是the "right" way to do this似乎正在使用适合 iPad 的事件:

var hitEvent = 'ontouchstart' in document.documentElement
? 'touchstart'
: 'click';
$('#dynamic').bind(hitEvent, function() {alert("works")});
$('#dynamic-with-onclick').bind(hitEvent, function() {alert("works")});
$('#dynamic-with-dynamic-onclick').bind(hitEvent, function() {alert("works")}).attr('onclick', '');

另一种方法是 bind to multiple events无论谁接到电话,都要感到高兴。

我目前正在使用第一个解决方案;我可能会尝试另一种,因为我认为它更干净。

关于iPad 上未调用 jQuery 单击处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7818461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com