Экранированные идентификаторы не работают с определенными функциями jQuery? - PullRequest
0 голосов
/ 25 января 2019

У меня есть поле выбора, и я написал некоторый код, который позволит ему отменить выбор, если снова щелкнуть эту же опцию. Это работало нормально, но когда я изменил id элементов для включения escape-символов, это не сработало. Возможно, у него действительно простой ответ, но я не достаточно опытен, чтобы сказать, что это такое. Может кто-нибудь подсказать, с чего мне начать искать?

Я предоставил скрипку, которая демонстрирует проблему. Внутри части HTML есть два текстовых поля, одно из которых деактивировано. Сохраненный работает, и если вы переключитесь на другой и запустите его, который точно такой же, за исключением того, что некоторые из идентификаторов элементов HTML содержали точки, код не работал. Я уже избежал всех идентификаторов, когда выполнял функции, поэтому я не уверен, чего мне не хватает.

<!--TEST BLOCK NO 1 - Works as intended  -->
<select id="S2" size=5 style="width: 200px">
  <option id="SO3">Test0</option>
  <option id="SO4">Test1</option>
  <option id="SO5">Test2</option>
</select>
<!---->

<!--TEST BLOCK NO 2 - Does not work (Add close bracket to activate)
<select id="S2" size=5 style="width: 200px">
  <option id="SO2.3">Test0</option>
  <option id="SO2.4">Test1</option>
  <option id="SO2.5">Test2</option>
</select>
<!---->

Код JS, который, по-видимому, не выполнялся в течение указанных периодов, включает следующие идентификаторы:

$(jqID).off('click');
$(jqID).on('click', function(){deSelect(this.id, 1)});

где jqID = "# SO2 \\. 3" или любой другой выбранный параметр

Полный JS включен с скрипкой.

Копая глубже, кажется, что когда одни и те же операторы выполняются в коде, они просто выполняются, ничего не делая. Но если я наберу это в консоли, это сработало. Это меня действительно запутало, что может происходить. Любая помощь приветствуется! Спасибо!

EDIT: Я не знаю, я не думаю, что это дубликат, и я просмотрел другие посты, чтобы добраться до этого кода, потому что он сказал мне включить 2 слеша. По крайней мере, я сделал неправильную вещь после прочтения ...

1 Ответ

0 голосов
/ 14 февраля 2019

Поскольку ваш код передает сгенерированную строку, вам потребуется только один \ вместо двух. Это должно решить проблему.

Для дополнительного чтения:

Как получить jQuery для выбора элементов с помощью a. (точка) в их удостоверении личности?

https://learn.jquery.com/using-jquery-core/faq/how-do-i-select-an-element-by-an-id-that-has-characters-used-in-css-notation/

...