2

我有一个疑问:是否可以禁用浏览器对链接的默认操作,例如此示例

我不是在谈论使用 Anchor 标签(第 123 部分)禁用点击事件event.preventDefault()

我正在尝试做的事情:页面开头有目录,名称链接(#part-)到页面的不同部分。我可以使用以下方法轻松禁用每个链接上的点击事件:

$("a.namedLink").click(function(event) {
  event.preventDefault();

  //and do whatever I want to, like animated scroll then moving the dock-able header using jQuery Affix plugin
}); 

但是,如果有人复制链接或使用 URL 本身(链接)直接打开它,则上面的代码将不起作用,因为没有点击任何内容。

我检查了几个示例,但是,它们都在谈论相同的页面和#click 事件,例如 Stackoverflow 线程Scroll to a div using jquery和其他:

链接1

链接2

请让我知道我们是否可以这样做,更重要的是,如果我们应该这样做。

谢谢

4

2 回答 2

2

您可以使用以下方法滚动到锚点:

$(document).scrollTo("a[name='namedLink']");

如果用户直接使用哈希点击页面,您还可以在页面加载时检查哈希位置:

$(function() {
  var hash = window.location.hash.substring(1, window.location.hash.length);
  if(hash != "") {
    $(document).scrollTo("a[name='"+hash+"']");
  }
});

你应该?这完全取决于你。这就像重新发明轮子只是为了让它变成红色,即使不是每个人都喜欢红色。

正如所指出的,非常有用的 scrollTo() 方法实际上是一个插件,而不是内置在 jQuery 中。可以在这里找到:http: //demos.flesler.com/jquery/scrollTo/

于 2013-07-16T12:05:00.320 回答
0

您可以执行以下操作:

$(function () {
  window.scrollTo(0,0);
});

在页面加载后将用户带回顶部。然而,这可能意味着页面会跳转两次。

于 2013-07-16T12:35:51.320 回答