gpt4 book ai didi

javascript - iPhone/Android 浏览器偶尔会跟随链接 href 而不是 jQuery onclick 事件

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

我有一个移动网络画廊页面,其中有一个 CSS float “下一个”链接。 CSS float 属性使链接具有 display: block 行为。 jQuery touchstart 事件绑定(bind)到链接。当用户单击链接时,绑定(bind)到该 touchstart 事件的 Javascript 代码通过 Ajax 将画廊推进一张幻灯片。换句话说,没有页面刷新。

但是,我注意到偶尔当我触摸链接 block 空间中不是链接文本本身的区域时,浏览器会跟随 href 并导致页面刷新(因为 URL 已更改)而不是执行 Javascript 代码绑定(bind)到 touchstart 事件。

有没有人见过这个?有办法解决这个问题吗?

我将它简化为下面的这段代码,它仍然会发生,尽管频率要低得多。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
<title>Test</title>

<script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.js'></script>

<style type='text/css'>
.cont { width: 320px; }
.next { border-left: 1px solid #000; float: right; text-align: right; width: 65px; }
.msg { clear: both; width: 200px; }
</style>

<script type='text/javascript'>//<![CDATA[
$(function(){
$('.next').bind('click touchstart', function(event) {
event.preventDefault();
if (event.type == 'touchstart') {
$(this).unbind('click');
}
$('.msg').append('<p>Click!</p>');
});
});//]]>
</script>
</head>
<body>
<div class="cont"><a href="http://www.yahoo.com" class="next">Next</a></div>
<div class="msg"></div>
</body>
</html>

最佳答案

我在我的 iPhone 上测试过它,它似乎可以工作。出于某种原因,在注册 touchstart 事件后,您将取消绑定(bind)点击事件。有什么理由吗?

当您单击链接的文本时,它似乎确实注册了 touch start,因此取消绑定(bind) click 不会破坏任何东西。但是,我确实相信,当您触摸文本链接外部但仍在 block 空间内时,它会同时注册 touchstartclick,所以此时您已经未绑定(bind)的 click 并且它作为常规链接工作。

您应该注意到,在您第一次点击边界外时,它永远不会转到 yahoo.com。只有下一次这样做。

所以本质上你需要做的是删除那个unbind,如下所示:

    <script type='text/javascript'>//<![CDATA[ 
$(function(){
$('.next').bind('click touchstart', function(event) {
event.preventDefault();
$('.msg').append('<p>Click!</p>');
});
});//]]>
</script>

您是否有任何理由想要取消绑定(bind) click

关于javascript - iPhone/Android 浏览器偶尔会跟随链接 href 而不是 jQuery onclick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9387379/

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