Author Topic: Как обломать jQuery  (Read 3546 times)

0 Members and 1 Guest are viewing this topic.

Offline Bhudh

  • Blogger
  • *
  • Posts: 49816
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
« on: July 18, 2012, 01:44 »
<…>
<p id="par_1"></p>
<p id="par_2"></p>
<…>
<script>
$('#par_1').append(text_1);
$('#par_2').append(text_2);
</script>

          ;up:

<…>
<p id="#"></p>
<…>
<script>
$('##').append(text_3);
</script>

         
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline RawonaM

  • Posts: 42337
« Reply #1on: July 18, 2012, 08:53 »
Quote
HTML4 id attribute

The ID and NAME elements must start with a letter i.e. upper case A to Z or lower case a to z; a number is not allowed. After the first letter any number of letters (a to z, A to Z), digits (0 to 9), hyphens (-), underscores (_), colons (:) and periods (.) are allowed.

Offline fujhi

  • Posts: 866
« Reply #2on: July 18, 2012, 09:27 »
:fp:
У џКвери проблем никаких, проблемы только у Бода.
$('#\\#').append(text_3); или $('[id="#"]').append(text_3);

Надо документацию сначала читать, прежде, чем что-то заявлять:
Quote
If the id contains characters like periods or colons you have to escape those characters with backslashes.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, dmymd@yandex.ru. Всем пока!

Offline Bhudh

  • Blogger
  • *
  • Posts: 49816
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
« Reply #3on: July 18, 2012, 11:55 »
Quote from:
HTML4 id attribute

The ID and NAME elements must start with a letter i.e. upper case A to Z or lower case a to z; a number is not allowed. After the first letter any number of letters (a to z, A to Z), digits (0 to 9), hyphens (-), underscores (_), colons (:) and periods (.) are allowed.
Вкурсе. Но в Опере document.getElementById('#') прекрасно работает :).
Кстати, document.getElementById('_') тоже, несмотря на.

У џКвери проблем никаких
И прямо взять его jQuery уже не сможет
Прямо — это как getElementById(). Без дополнительных символов.
Так-то можно и $(document.getElementById('#')) написать, и всё сработает.
Но это всё равно будет костыль, без применения которого до тэга не дотянуться.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline fujhi

  • Posts: 866
« Reply #4on: July 18, 2012, 12:09 »
Прямо — это как getElementById(). Без дополнительных символов.
:fp:
Это не костыль, а семантика селектора. Причём в документации она описана с примерами. Но нет же, мы же лучше авторов знаем, что «должны» делать селекторы. Ты ещё регулярки обвини в том, что они не могут «прямо» найти строку с точкой, мол, «\.» — это костыль, надо, чтобы угадывали, когда . метасимвол, а когда нет.

Вообще, $("div#hello o").hide() — это костыль. Не костылём было бы писать «скрыть все абзацы в блоке hello». Твои утверждения примерно такой же глубины.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, dmymd@yandex.ru. Всем пока!

Offline Bhudh

  • Blogger
  • *
  • Posts: 49816
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
« Reply #5on: July 18, 2012, 12:17 »
Я понимаю,что мета. Я имел в виду, что так можно "спасти" элемент от перебора, буде потребуется. Без условий и регулярок тут уже не обойдёшься: откуда ты узнаешь, куда совать свои слэши, а куда не надо⁈
Хотя от $('*') не знаю, спасёт ли… Надо проверить…
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline fujhi

  • Posts: 866
« Reply #6on: July 18, 2012, 12:19 »
— Как обломать C?
— Назвать переменную if.
— Но ведь так задумано!
— Да, но в Scheme (define if 1) прекрасно работает.
Одухотворённая тема.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, dmymd@yandex.ru. Всем пока!

« Reply #7on: July 18, 2012, 12:24 »
Я имел в виду, что так можно "спасти" элемент от перебора, буде потребуется. Без условий и регулярок тут уже не обойдёшься: откуда ты узнаешь, куда совать свои слэши, а куда не надо⁈
Ничего не понял.

Без условий и регулярок тут уже не обойдёшься: откуда ты узнаешь, куда совать свои слэши, а куда не надо⁈
Почему? Если тебе обязательно надо избежать экранирования, то используешь полную форму xxx[id="yyy"] вместо сокращённой xxx#yyy и обходишься без слэшей.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, dmymd@yandex.ru. Всем пока!

Offline Bhudh

  • Blogger
  • *
  • Posts: 49816
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
« Reply #8on: July 18, 2012, 12:27 »
— Как обломать C?
— Назвать переменную if.
— Но ведь так задумано!
— Да, но в Scheme (define if 1) прекрасно работает.
Криво.
Опера — не другой язык программрования, а один из интерпретаторов.
А # не совсем зарезервирован. В JS он тащемта не используется, только в HTML/CSS.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline fujhi

  • Posts: 866
« Reply #9on: July 18, 2012, 12:29 »
Вкурсе. Но в Опере document.getElementById('#') прекрасно работает :).
Надо сравнивать $("##") не с document.getElementById('#'), а с document.querySelectorAll("##"). Поддерживает ли его Опера — не знаю.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, dmymd@yandex.ru. Всем пока!

« Reply #10on: July 18, 2012, 12:31 »
Опера — не другой язык программрования, а один из интерпретаторов.
Не криво. Разница между getElementById("...") и $("...") сравнима с разницей между Си и Схемой.

А # не совсем зарезервирован. В JS он тащемта не используется, только в HTML/CSS.
:fp:
Он зарезервирован не в JavaScript’е в целом, а в синтаксисе селекторов.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, dmymd@yandex.ru. Всем пока!


Offline Bhudh

  • Blogger
  • *
  • Posts: 49816
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
« Reply #12on: July 18, 2012, 12:39 »
Поддерживает-то она почти всё…
Но:
Quote from:
DOMException: SYNTAX_ERR
:(
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

« Reply #13on: July 18, 2012, 12:41 »
Он зарезервирован не в JavaScript’е в целом, а в синтаксисе селекторов.
С каких пор синтаксис селекторов CSS относится к js⁈
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline fujhi

  • Posts: 866
« Reply #14on: July 18, 2012, 12:50 »
Поддерживает-то она почти всё…
Да ну? Недавно столкнулся с тем, что Опера — единственный браузер, который не позволяет мониторить вставку/вырезание/копирование.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, dmymd@yandex.ru. Всем пока!

« Reply #15on: July 18, 2012, 12:52 »
Он зарезервирован не в JavaScript’е в целом, а в синтаксисе селекторов.
С каких пор синтаксис селекторов CSS относится к js⁈
:fp:
Синтаксис селекторов (которые не только CSS, хотя они там появились) имеет самое прямое отношение к функциям jQuery и к функциям SelectorAPI: эти функции принимают аргументы в этом синтаксисе.

А к JS в целом, понятно, этот синтаксис отношения практически не имеет: ActionScript или RhinoJS не имеют никакого отношения к селекторам, это да.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, dmymd@yandex.ru. Всем пока!

« Reply #16on: July 18, 2012, 12:54 »
Offtop
Валентин Н., отдайте, пожалуйста, Bhudh’у его компьютер!
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, dmymd@yandex.ru. Всем пока!

Offline Bhudh

  • Blogger
  • *
  • Posts: 49816
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
« Reply #17on: July 18, 2012, 13:03 »
Опера — единственный браузер
12-я уже вроде мониторит…
Во всяком случае, все галки на Test page выставила.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

« Reply #18on: July 18, 2012, 13:10 »
Синтаксис селекторов (которые не только CSS, хотя они там появились) имеет самое прямое отношение к функциям jQuery и к функциям SelectorAPI
Я-то спрашивал не про библиотеку…
На http://www.w3.org/TR/selectors-api есть ссылка на Standard ECMA-262, но поиск выражения «Selectors API» по ней ничего не дал… :donno:
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline fujhi

  • Posts: 866
« Reply #19on: July 18, 2012, 13:12 »
Синтаксис селекторов (которые не только CSS, хотя они там появились) имеет самое прямое отношение к функциям jQuery и к функциям SelectorAPI
Я-то спрашивал не про библиотеку…
См. заголовок темы. jQuery — это библиотека.

А спрашивать ты вообще ничего не спрашивал.

Ладно, я самоустраняюсь из этой темы — я от неё тупею.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, dmymd@yandex.ru. Всем пока!

Offline Bhudh

  • Blogger
  • *
  • Posts: 49816
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
« Reply #20on: July 18, 2012, 13:14 »
А спрашивать ты вообще ничего не спрашивал.
С каких пор синтаксис селекторов CSS относится к js⁈
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline fujhi

  • Posts: 866
« Reply #21on: July 18, 2012, 21:37 »
С каких пор синтаксис селекторов CSS относится к js⁈
Синтаксис селекторов (которые не только CSS, хотя они там появились) имеет самое прямое отношение к функциям jQuery и к функциям SelectorAPI: эти функции принимают аргументы в этом синтаксисе.

А к JS в целом, понятно, этот синтаксис отношения практически не имеет: ActionScript или RhinoJS не имеют никакого отношения к селекторам, это да.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, dmymd@yandex.ru. Всем пока!

 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Note: this post will not display until it's been approved by a moderator.
Name: Email:
Verification:
Type the letters shown in the picture
Listen to the letters / Request another image
Type the letters shown in the picture:
√49 Напишите ответ строчными буквами:
«Сто одёжек, все без застёжек» — что это?: