在var上出现“ +”字符问题

时间:2019-04-25 10:57:52

标签: javascript jquery string-concatenation

我在传递给jQuery对象$()的字符串中的字符“ +”有问题

我尝试初始化String对象和concat,但问题仍然相同。

function fn(string){
    $(string).show();
}

let myString = ".my-class-that-contains+";
fn(myString);

代码未按预期响应。当我从字符串末尾删除字符“ +”时,一切正常。

2 个答案:

答案 0 :(得分:1)

+在选择器中具有定义的含义。这是sibling combinator

要在类选择器的类名称中使用它,您需要对其进行转义(使用\)。

请记住,CSS转义字符也是JavaScript转义字符,因此您必须对选择器中的\字符进行转义,以将其放入JavaScript字符串文字中。

function fn(string){
    $(string).show();
}

let myString = ".my-class-that-contains\\+";
fn(myString);
div { display: none; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="my-class-that-contains+">
This is hidden by default
</div>

最好首先避免在类名中使用特殊字符。

答案 1 :(得分:0)

您可以使用like选择器。

  function fn(string){
    // $(string).show();

    $('[class="'+string+'"]').show();
    }

    let myString = ".my-class-that-contains+";
    fn(myString);

供参考: https://api.jquery.com/attribute-starts-with-selector/