在执行 location.search 和 decodeURIComponent 之后将 class 添加到 div

Add class to a div after doing location.search and decodeURIComponent

我想在单击此按钮(如选项卡)时向 <li> 添加 class "active"。 coffeeScript 将搜索 URL 并重置散列 URL 以向页面提供内容。选择每个选项卡时,我使用 $("."+key).addClass("active") 添加 class。但是 key 的初始值未定义,所以在 javaScript 控制台中它出现 jQuery Uncaught Error: Syntax error, unrecognized expression:. .

在这种情况下,如何给键一个初始值,因为页面总是在 location.search 之后重新加载?

HTML:

<nav>
  <ul class="nav">
      <li class = "sherlock"><img src="logo1.png" ></a></li>
      <li class = "aesop"><img src="logo2.png" ></a></li>
  </ul>
</nav>

CoffeeScript:

$ ->
  key = decodeURIComponent(location.search).replace("?","")

  $("."+key).addClass("active")

  $("nav").on "click",".sherlock", ->
    key = "sherlock"
    location.replace("#")
    location.search = encodeURIComponent(key)


  $("nav").on "click",".aesop", ->
    key = "aesop"
    location.replace("#")
    location.search = encodeURIComponent(key)

在继续之前检查键是否未定义:

key = decodeURIComponent(location.search).replace("?","")

    if (typeof key !== "undefined"){
        // your code here.
    }

如果键在别处定义但可能为空或 null,您也可以使用 if (key){//Your code here }