2012-02-21 72 views
3

使用这种回暖点击:锚iOS上的Safari浏览器失去点击的能力滚动后

$("nav li a").click(function(event) { 
    event.preventDefault(); 
    target = $(this).attr("href").replace('#', ''); 
    goToByScroll(target); 
}); 

这是滚动功能:

function goToByScroll(id) { 
    $('html, body').animate({ 
     scrollTop: $("#"+id).offset().top - totalHeight 
    }, 'slow'); 
} 

第一次单击作品,但之后的链接AREN除非手动滚动页面,否则不可点击/活动。有任何想法吗?

回答

0

有很多因素可以在这里发挥作用,大多数不涉及您链接的代码。对于点击到不行:

  1. click事件被清除
  2. 您尝试单击该单元由另一个(可能是透明的)元素
  3. 你的元素的可点击区域移位或覆盖格式不正确

对于第一种可能性是问题,您的元素必须保持不可点击直到刷新或直到您重新创建点击处理程序。检查点击处理程序是否不是多次构建的。您可以在拨打$(element).click(function() { ... })的地方设置断点或警报/控制台语句来完成此操作。

对于第二种可能性是该问题,另一个元素需要存在于可点击元素的顶部。这可以通过使用浏览器或浏览器扩展来检查,该扩展允许您右键单击要检查的元素。如果获取检查的元素不是您的可点击元素,这可能是问题。

对于第三种可能性是该问题,您必须检查可点击元素在不可点击时的位置,大小和形状。使用您的浏览器或浏览器扩展程序选择并突出显示页面上的元素。看看它正在显示的位置,它具有的尺寸,z-index的计算结果,它具有的显示属性(display: inline因可点击性而导致的问题),以及它在当前视口中是否“实际”。

总之,您发布的代码几乎没有说明可能发生的情况,因此您需要进行更多调试或提供更多代码。

+0

我在标题和导航标记上使用了固定位置。导航标签有li元素全部显示块并向左浮动。标题和导航标记具有z-index:1,以便它们在滚动文档时保持在内容的顶部。问题是,我最初在$(“nav li a”)上得到一个点击事件,但后来我失去了点击能力。但是如果我只滚动一个像素的页面,我就可以获得点击能力。我见过类似的帖子,表明这个问题是一个固定位置div的iOS错误。想知道这是否是同样的情况。 – user1223466 2012-02-21 14:02:21

+0

我建议在jsfiddle中建立一个准系统版本,看看你是否可以产生相同的错误结果。如果不是,那么错误在于其他地方。 – Koviko 2012-02-21 21:38:20

+0

我得到完全相同的问题...我的标题是POS固定。当您向下滚动新闻项目列表时,标题后面不会点击。但是用手指滚动并且可以立即点击。 当你只有iOS时,你如何进行调试?!?我没有实验! 但我确实发现,如果链接已在标题下滚动,则会点击该链接而不是后退。 – 2012-06-29 09:17:33

1

根据iOS人员的进一步调查,我们发现这是iOS5 Safari上的一个bug。

我试过了;

// $('html,body').animate({ scrollTop: scrollto + 'px' }, 'slow') 
window.scroll(0,0); 

而且看到它实际上将固定头部绘制在屏幕下方。点击工作。

所以我将代码交换回来了,虽然它在顶部正确地绘制了标题,但活动的点击区域仍然在页面的更下方,尽管是不可见的,可点击。

似乎他们已经解决了它在iOS6上的测试。

我耗尽了各种CSS和DOM操作,删除和重新插入新的标题区...没有任何作用。

所以我99%肯定会发布这个答案。大声笑。虽然我意识到这并不能帮助你。

相关问题