使用模板文字的无法识别的表达式

时间:2019-02-09 21:14:45

标签: javascript jquery html html5 webpage

执行此代码:

let pathb = $('.cslideract').attr('data-pathb');
console.log(pathb);

我得到以下结果:anima/01/inc

现在我尝试在此功能中使用它:

if($(`.partslider[data-pathb=${pathb}]`).length > 0){console.log('323');}

我收到此错误:

unrecognized expression: .partslider[data-pathb=anima/01/inc/]

我用let pathb = 'anything'尝试了同样的方法,并且可以,但是我的变量是anima/01/inc

3 个答案:

答案 0 :(得分:3)

如jQuery文档here中所示,您需要在属性选择器中的值周围使用引号。试试这个:

if($(`.partslider[data-pathb="${pathb}"]`).length > 0){console.log('323');}

CSS attribute selectors也是如此。

答案 1 :(得分:1)

使用引号""括起文字

let pathb = $('.cslideract').attr('data-pathb');
console.log(pathb);


if($(`.partslider[data-pathb="${pathb}"]`).length > 0){console.log('323');}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="cslideract" data-pathb="anima/01/inc"></div>
<div class="partslider" data-pathb="anima/01/inc"></div>

答案 2 :(得分:1)

您可以在CSS选择器($.escapeSelector())中转义具有特殊含义的字符:

let pathb = 'anima/01/inc';

console.log(`.partslider[data-pathb=${$.escapeSelector(pathb)}]`);

if($(`.partslider[data-pathb=${$.escapeSelector(pathb)}]`).length > 0){
    console.log('323');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>