Проблема с символом «+» на var - PullRequest
0 голосов
/ 25 апреля 2019

У меня проблема с символом "+" внутри строки, переданной объекту jQuery $ ()

Я попытался инициализировать объект String и concat, но проблема осталась прежней.

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

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

Код не отвечает, как ожидалось.Когда я удаляю символ «+» в конце строки, все работает нормально.

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

+ имеет определенное значение в селекторе.Это братский комбинатор .

Чтобы использовать его в имени класса в селекторе классов, вам нужно его экранировать (с \).

Помнитечто escape-символ CSS также является escape-символом 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>

Лучше всего избегать использования специальных символов в именах классов.

0 голосов
/ 25 апреля 2019

вы можете использовать как селектор для него.

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

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

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

Для справки: https://api.jquery.com/attribute-starts-with-selector/

...