使用 jQuery 变量作为 href 选择器

4

非常抱歉这个问题很基础,但我是一个被难住的新手。

下面的代码可以正常工作。我希望做的是将存储为变量的哈希值与页面上具有相同哈希/目标ID的href进行匹配(例如,链接所在的页面= page.php#options,链接= <a href="#options">),并向特定链接添加类。

例如,我想用变量hash中存储的任何内容(如果有的话)来代替#options。 我已经尝试了许多组合,如$('[href="hash"]')$('a[href=hash]')等,但我的jquery不是那么流利,所以我不确定我犯了什么错误。

我唯一能想到的是,存储的哈希可能不包括目标href所需的“#”,但这可能是牵强附会。

$(document).ready(function() {

    var hash = window.location.hash;

    if(hash != "") {
        $('[href="#options"]').addClass("selected");
    }       
});

我希望这有意义,欢迎提供任何见解。 提前感谢。
1个回答

7

$('[href="' + hash + '"]').addClass("selected");

这段代码是用来给指定的链接添加一个名为"selected"的类。

如果可能的话,再问一个问题。这在webkit浏览器中效果很好,但在firefox中,页面滚动到了隐藏div所在的位置,而不是所在指定部分的顶部。我还漏掉了其他东西吗?再次感谢。 $(document).ready(function(){ var tabContainers = $('div.tabs> div'); var hash = window.location.hash; if(hash!=“”){ tabContainers.hide()。filter(hash).show(); $('div.tabs ul.tabNavigation a').removeClass(“selected”); $('[href="'+ hash +'"]').addClass(“selected”); } }); - whist
不确定是否相关,但你的'.filter(hash)'看起来很奇怪。Hash变量包含哈希字符串,对于过滤函数来说没有意义。你可能想要写成'.filter($('a[href="' + hash '"]')'。同时请检查控制台中的代码错误。 - spacevillain
是的,在控制台中我没有收到任何错误信息。那行特定的代码是用于显示正确的隐藏div。它似乎工作得很好,但我理解这个奇怪的语法,但我不认为它是“哈希跳转”问题的一部分...谢谢,我很感激。 - whist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接