【问题标题】:jQuery: Finding a particular HREF LinkjQuery:查找特定的 HREF 链接
【发布时间】:2010-08-10 22:23:50
【问题描述】:

基本上这个想法是找出文档的当前位置并更改要更改的链接(导航手风琴)的类。到目前为止,如果 pageURL (变量)是实际链接,我在下面有这个,但我不想创建一个完整的可能链接列表,因此 $(location).att('href');

$(document).ready(function() {
    var pageURL = $(location).attr('href');
    $('a[href=pageURL]').attr('class', 'active');
});

任何人的帮助将不胜感激

提前致谢

【问题讨论】:

  • 请注意,这要求您使用绝对 URL 作为 href 值。
  • @Gumbo:实际上 jQuery 现在可以解决这个问题,所以你不应该使用绝对值。它必须这样做是为了与浏览器的原生 querySelectorAll 实现保持一致,这些实现将在可用的地方使用。我仍然建议使用类或 id,而不是依赖一个确切的链接地址。

标签: jquery href


【解决方案1】:

您需要将变量连接到选择器字符串中。

$('a[href=' + pageURL + ']').attr('class', 'active'); });

按照您的方式,“pageURL”只是选择器的一部分,因此 jQuery 正在寻找带有“pageURL”作为 href 属性的 <a> 元素。

另外,我不知道location 变量代表什么,但如果您要查找当前窗口位置,则需要另一种方法。

【讨论】:

  • 谢谢帕特里克,我目前正在使用该变量,因为目前的链接可能需要整个路径(http://),而 javascript 中的 window.location 无法放入其中
  • @NWhite - 我认为window.location 在所有浏览器中都为您提供了http://。无论如何,如果没有,只需对其进行测试并在必要时附加它。我会更新我的答案。
  • 对不起我的错误 window.location 我使用的是来自 Slaks answer oops 的 location.pathname
  • @NWhite:你应该使用[href*=...]
  • 啊,好的,抱歉,我没有注意到您的回答中的 *,也感谢 SLaks
【解决方案2】:

通过编写'a[href=pageURL]',您正在搜索a 元素的href 属性等于文字pageURL,而不是变量的内容。
相反,您需要将变量的内容连接到选择器字符串中。

例如:

$('a[href*="' + location.pathname + '"]').attr('class', 'active');

使用 jQuery 访问 location.href 毫无意义。
即使链接不包含域名,写入location.pathname 也会使其正常工作。
使用[href*=...] 选择器匹配具有href 属性且包含字符串的元素。

【讨论】:

  • 就像/foo/bar 包含/foo
  • @Gumbo:如果这是一个问题,您可以将其更改为href$=,它会检查它是否以该路径结尾。但是,这不会处理查询字符串。
【解决方案3】:

正确的语法是:

$('a[href=' + pageURL + ']').attr('class', 'active'); });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    相关资源
    最近更新 更多