此功能在 IE、Firefox 和 Chrome 上完美运行,但在 iPhone 上,它仅在单击 <img>
时可用。 .单击页面(除 img 之外的任何地方)不会触发该事件。
$(document).ready(function () {
$(document).click(function (e) {
fire(e);
});
});
function fire(e) { alert('hi'); }
HTML 部分非常基础,应该不是问题。
有什么想法吗?
简答:
<style>
.clickable-div
{
cursor: pointer;
}
</style>
更长的答案:
重要的是要意识到,如果您只是使用 <a>
标记一切都会按预期工作。您可以在常规上错误地单击或拖动 <a>
在 iPhone 上链接,一切都如用户所期望的那样。
我想您有不可点击的任意 HTML - 例如包含无法用 <a>
包裹的文本和图像的面板.当我有一个我想要完全可点击的面板时,我发现了这个问题。
<div class='clickable-div' data-href="http://www.stackoverflow.com">
... clickable content here (images/text) ...
</div>
为了检测此 div 中任何位置的点击,我使用带有 data-href
的 jQuery html 属性,如上所示(此属性是我自己发明的,不是标准的 jQuery 或 HTML 数据属性。)
$(document).on('click', '.clickable-div', function() {
document.location = $(this).data('href');
});
无论您点击多少次,这都适用于您的桌面浏览器,但不适用于 iPad。
您可能想将事件处理程序从 click
更改为至 click touchstart
- 这确实触发了事件处理程序。然而,如果用户想要向上拖动页面(滚动),他们也会触发它——这是一种糟糕的用户体验。 [您可能已经通过偷偷摸摸的横幅广告注意到了这种行为]
答案非常简单:只需设置 css cursor: pointer
强>。
<style>
.clickable-div
{
cursor: pointer;
}
</style>
这为桌面用户带来了额外的好处,可以用手形图标指示该区域是可点击的。
感谢https://stackoverflow.com/a/4910962/16940