使用jquery停止默认的#标签行为

时间:2010-05-17 20:02:30

标签: jquery url anchor

我正在使用以下代码将主题标签附加到网址的末尾。这样,有人可以复制该网址并将其带回该页面,并且某些div可见。

$("a.live").click(function() {
    window.location.hash = 'live'; 
    $("#live).slideDown();
});

在这个例子中,我有一个名为'live'的div,当点击一个链接时会滑动,并且会在网址中添加'#live'。然后我有代码在加载页面时检查哈希标记以显示正确的div。

我的问题是,如何阻止浏览器在调用后跳转到“live”div?我不希望页面向下滚动到div,只是希望它打开并附加了主题标签,这样一个人就可以复制它并返回到显示该div的页面。

任何提示?

谢谢!

3 个答案:

答案 0 :(得分:8)

这取决于。如果要在单击锚点时阻止它,请使用:

$("a.live").click(function(e) {
    e.preventDefault(); // Prevents browsers default action
    window.location.hash = 'live'; 
    $("#live").slideDown();
});

如果你想在页面加载时阻止它滚动到哈希,我不知道你会如何阻止它。

答案 1 :(得分:8)

试试这个:

$("a.live").click(function() {
    window.location.hash = 'live'; 
    $("#live").slideDown();
    return false; // this will prevent default action
});

答案 2 :(得分:2)

我假设您在文档就绪事件中有一些代码,用于打开div,如您所说?如果是这样,我建议您在哈希中为ID添加前缀(如#_live),以便在文档中找不到ID,从而阻止浏览器自动滚动到该元素,然后修改代码以删除你拿起它时的前缀。

我建议这个'黑客',因为我认为你不能阻止使用JavaScript的浏览器行为,至少对于跨浏览器解决方案来说肯定不可靠。