jquery 检查hash是否为href中第一个斜杠后的第一个元素

w41d8nur  于 2022-11-03  发布在  jQuery
关注(0)|答案(2)|浏览(168)

我有一个包含链接的菜单,可能类似于以下内容之一:

mywebsite.com/#find
mywebsite.com/about-us/#team
mywebsite.com/#social
mywebsite.com/services/#something

我想对第一个和第三个链接(在url路径中没有子目录的链接)做一些only的事情。我如何检查# hash是否是链接中第一个斜杠后面的第一个元素?

$('#menu a').click(function() {

  var target = this.href;

  // check if "/#" is the first thing after the domain name

});
  • 谢谢-谢谢
wfveoks0

wfveoks01#

解析URL的URL类可以帮助您。URL.pathname属性包含url的路径(域后面的字符串)

$('#menu a').click(function(e) {
  if (new URL(this.href).pathname == "/"){
    // Do something
  }
});

更精确的模式是

$('#menu a').click(function(e) {
  let url = new URL(this.href)
  if (url.pathname == "/" && url.hash != ''){
    // Do something
  }
});

第一个

m4pnthwp

m4pnthwp2#

让我们先忽略https://部分,然后找到第一个/,并希望找到它后面的#

var tests = `mywebsite.com/#find
mywebsite.com/about-us/#team
https://mywebsite.com/#social
mywebsite.com/services/#something`.split("\n");

function isMyHash(url) {
  var start = url.indexOf("://") > -1 ? url.indexOf("://") + 3 : 0;
  start = url.indexOf("/", start);
  return (url.substring(start + 1, start + 2) == '#')

}

tests.forEach(function(test) {
  console.log(test, isMyHash(test) ? "✔" : "x")
})

相关问题