jQuery Uncaught语法错误,无法识别的表达式:+

时间:2019-07-03 17:43:22

标签: javascript jquery

我有一段代码,当将jQuery符号作为字符串的一部分传递时,正在与"+"产生一些问题。

这里是一个例子:

var ssArr = ["First/","Second /","Third+"];
if(ssArr !== null) {
  $.each(ssArr, function(ind, val){
    if(val !== ''){
      val = val.replace(/ /g, '').replace('/', '');
      console.log(val);
      $('.tstNavLi' + val).addClass('active');
    }
  });
}
ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

ul li {
  color: coral;
  text-align: center;
  font-family: "Arial", sans-serif;
  font-size: 30px;
  border: 3px solid coral;
  margin: 20px 0
}

ul li.active {
  color: blue;
  border: 3px solid blue;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  
  <ul>
    <li class="tstNavLiFirst">First</li>
    <li class="tstNavLiSecond">Second</li>
    <li class="tstNavLiThird+">Third+</li>
  </ul>
  
</body>
</html>

我该如何使用它?这是cms /购物系统的一部分,"+"符号的使用非常频繁,因此我无法将"+"更改为其他符号。

谢谢。

1 个答案:

答案 0 :(得分:1)

首先考虑的是那些真的class,还是应该像data-label这样的东西?

因为它们实际上不是CSS类,所以可以将它们作为data-label放置,然后用"[data-label='"+val+"']"进行选择(如果标签中出现',则可以使用转义符进行选择)。 ..)

否则,您将需要正确地转义输入字符串,这可能很麻烦。