Подтвердить что ты не робот

Побег квадратных квадратных скобок при присвоении имени класса элементу

Кто-нибудь знает, как избежать использования символа квадратной скобки при установке имени класса с помощью jQuery?

Попробуйте следующее:

$('#txtFirstname').addClass('test[someval]')

затем

$('#txtFirstname').attr('class')

вы увидите, что класс там.

Теперь попробуйте

$('#txtFirstname').hasClass('test[someval]')

СБОЙ

Единственная причина, по которой я могу придумать, это квадратные скобки.

И мне нужно это для моей проверки JQuery, вы видите.

4b9b3361

Ответ 2

Введение страницы jQuery API дает следующее объяснение:

Чтобы использовать любой из метасимволов (например,! "# $% & '() * +,./:; <= > ? @[] ^` {|} ~) как буквальная часть имени, она должна сбежать с двумя обратными косыми чертами: \\.

Ответ 3

Если селектор содержится внутри переменной (или если вы можете получить ее в переменной), приведенный ниже код может быть полезен:

selector_name = $this.attr('class');
//e.g selector_name = users[0][first:name]

escaped_selector_name = selector_name.replace(/(:|\.|\[|\])/g,'\\$1');
//e.g escaped_selector_name = users\\[0\\]\\[first\\:name\\]

Короче говоря, мы префикс всех специальных символов с двойным обратным слэшем. Вот еще дополнительная документация с сайта jQuery:

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

Ответ 4

Краткий ответ: вам не нужно заключать в скобки, поскольку аргументом является имя класса, а не селектор. Он не работает для вас из-за ошибки в более ранних версиях jQuery, которая уже давно исправлена.

Чтобы продемонстрировать это, здесь ваш код работает под разными версиями:

  • jQuery/1.3.2 (глючит):

$('#txtFirstname').addClass('test[someval]')
$('#txtFirstname').attr('class')
console.log($('#txtFirstname').hasClass('test[someval]'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<div id="txtFirstname"></div>