【问题标题】:Stop default hashtag behavior with jquery使用 jquery 停止默认主题标签行为
【发布时间】:2010-05-17 20:02:29
【问题描述】:

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

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

在此示例中,我有一个名为“live”的 div,当单击链接时会向下滑动,并将“#live”添加到 url。然后我有代码在页面加载时检查哈希标签以显示正确的 div。

我的问题是,如何防止浏览器在调用后跳转到“实时”div?我不希望页面向下滚动到 div,只希望它打开并附加标签,以便人们可以复制它并返回显示该 div 的页面。

有什么建议吗?

谢谢!

【问题讨论】:

  • 等一下,您的意思是点击上述链接时,还是第一次加载页面时出现 URL 中的哈希值?

标签: jquery url anchor


【解决方案1】:

试试这个:

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

【讨论】:

    【解决方案2】:

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

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

    如果您想在页面加载时阻止它滚动到哈希,我不确定您将如何阻止它。

    【讨论】:

      【解决方案3】:

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

      我建议使用这种“hack”,因为我认为您无法使用 JavaScript 阻止浏览器行为,至少对于跨浏览器解决方案而言肯定不可靠。

      【讨论】:

        猜你喜欢
        • 2023-03-13
        • 2023-03-31
        • 2015-06-17
        • 1970-01-01
        • 2015-03-11
        • 2022-11-05
        • 1970-01-01
        • 1970-01-01
        • 2011-10-18
        相关资源
        最近更新 更多