【问题标题】:How to check if href contains variable如何检查href是否包含变量
【发布时间】:2018-06-29 21:43:44
【问题描述】:

我想为包含变量“activeLink”的链接添加一个类。

目的是突出当前活动的链接,即指向用户当前所在位置的链接。

这是我尝试过的:

//This gets the url parameter
function getQueryVariable(variable) {
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    var pair;
    for (var i=0; i<vars.length; i++) {
        pair = vars[i].split("=");
        if (pair[0] == variable){
            return pair[1];
        }
    }
    return false;
}

//This is where it is stored in variable activeLink
var activeLink = getQueryVariable("pagename");

//This is where I am having trouble
$('.nav a').each(function(index, element) {
  if($('.nav a').attr("href") == activeLink) {
    $(this).addClass('active');
  }
});

【问题讨论】:

  • 请发minimal reproducible examplegetQueryVariable 是什么?
  • if($('.nav a').attr("href") == activeLink) 应该是if(element.attr("href") == activeLink)

标签: jquery


【解决方案1】:

在这种情况下不需要.each,因为.find 将“搜索这些元素的后代”。

只需要文件名(以及可选的查询字符串,但不需要完整的 url)来回答

//var url = 'file://yi/er/san/page.php?page=4'; // use this variable for testing
var url = window.location.href;
var filepath = url.lastIndexOf("/") + 1;
var matchThis = url.substr(filepath);
$('.nav').find("a[href*='"+matchThis+"']").addClass('active');

【讨论】:

  • 壮观的解决方案!
【解决方案2】:

您可以使用String.prototype.includes() 来查找链接是否包含该字符串而不是等于该字符串。

var activeLink = getQueryVariable("pagename");

$('.nav a').each(function(index, element) {
    if($('.nav a').attr("href").includes(activeLink)) {
        $(this).addClass('active');
    }
});

【讨论】:

    【解决方案3】:

    你的功能看起来很不错,只是稍作改动

    试试这个

     $(document).ready(function(){
       var activeLink = getQueryVariable("pagename");
       $('.nav a').each(function(index, element) {
          if($(this).attr("href").indexOf(activeLink) != -1)
             $(this).addClass('active');
       });
      });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-27
      • 2019-01-28
      • 1970-01-01
      • 2023-03-12
      • 2018-04-23
      • 1970-01-01
      • 2022-12-04
      • 2013-06-21
      相关资源
      最近更新 更多