jQuery, используйте ~ как часть id - как? - PullRequest
5 голосов
/ 22 ноября 2011

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

Теперь мне нужно получить доступ к одному из них в jQuery по id, но у меня не получается. По-видимому, jQuery рассматривает это как #prev ~ sibling вещь.

Можно ли как-то избежать экранирования знака ~ в функции jQuery?

Вот пример того, как выглядит мой код:

<select id="a~b~c">
  <option value='1'>one</opiton>
</select>

<script>
  $("#a~b~c").change(function(){
    alert('a');
  });
</script>

Ответы [ 4 ]

3 голосов
/ 22 ноября 2011

попробуйте

  $("#a\\~b\\~c").change(function(){
    alert('a');
  });
2 голосов
/ 22 ноября 2011

Ответ на этот вопрос есть в официальном FAQ по jQuery .

Вам нужно сбежать с помощью \\.

2 голосов
/ 22 ноября 2011

Вы можете использовать \\ http://api.jquery.com/category/selectors/

$('#a\\~b\\~c')

Или, если побег проблематичен, вы можете использовать: http://api.jquery.com/attribute-equals-selector/

$('[id="a~b~c"]')

Fiddle Demo

1 голос
/ 22 ноября 2011

Экранирующий символ в jQuery - это два обратных слэша, \\, поэтому попробуйте это:

$("#a\\~b\\~c").change(function(){    
    alert('a');
});

Скрипка, чтобы показать, как она работает

Дополнительная информация о селекторах jQuery: http://api.jquery.com/category/selectors/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...