取消隐藏/隐藏文本后如何防止滚动到顶部?

时间:2012-06-04 21:43:22

标签: javascript jquery html css mobile

关于如何使用+/-符号取消隐藏/隐藏文字,有old StackOverflow question

Cheeso针对一些sample code发布了一个不错的解决方案。这正是我所寻找的,虽然原始海报并不同意。 : - )

我在网站上使用的代码是打算在移动设备上使用的。唯一的问题是,只要点击+/-,页面就会跳回到屏幕顶部。

反正有没有解决这个问题?感谢。

3 个答案:

答案 0 :(得分:2)

在您的点击事件处理程序中,返回false。

$('a.selector').click(function() {
    return false;
});

答案 1 :(得分:2)

以下是Cheeso在电子邮件中提供给我的答案。我在这里张贴它是为了其他人的利益。这没有用,我正在弄清楚原因。


如果更改此行  $('div p a [href =“#”]')。click(function(){expando(this);});

到此:

$('div p a [href =“#”]')。click(function(ev){ev.preventDefault(); expando(this);});

......我认为它应该停止滚动到顶部。


当用户点击具有哈希字符的链接时,浏览器应滚动到页面上放置片段标记的位置。喜欢书签。例如,在此网址中:http://en.wikipedia.org/wiki/Causes_of_WWII#Militarism片段(书签)是#Militarism,如果您点击该链接,您的浏览器将滚动到该部分。

在我写的那个样本的情况下,href是裸#字符,这意味着一个空片段。我想浏览器正在滚动到默认位置,我猜这是“页面顶部”。

要避免这种情况,只需在点击处理程序中调用ev.preventDefault()即可。这是一个jQuery技巧,可以抑制点击的正常处理;在您的情况下,它会抑制浏览器尝试滚动到不存在的锚点的部分。

答案 2 :(得分:1)

在点击处理程序中实施event.preventDefault()

$('a').click(function(e) {
    e.preventDefault();
    // more code here
});