10.02.2010, 17:33
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
Сообщение от Cr@ZyBoY
|
попридержите коней. Откуда у вас в html-коде взялось 2 элемента с одним id? Это прямое нарушение стандарта.
|
Прямое не прямое, querySelectorAll выдает то, что я написал.
Да и читал на webo.in, что строить стили на #id выгоднее + как вы не крутите а стили распространяются на все одинаковые #id а не на только первый попавшийся... Да и по вашим словам такой запрос вообще бессмыслен, а такое есть на самом деле.
Сообщение от Cr@ZyBoY
|
По поводу селектора "* SPAN I + SPAN DIV B + *"
|
Это я привел в пример, что бы было над чем подумать, если селектор будет содержать с одной или с другой стороны запрос вида "[atribute=abrakadabra]", то движок просто рухнет, если нет поддержки querySelectorAll, да и тест на то как работает "+" в чистом движке. Как видно в jQ неправильно.
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Последний раз редактировалось PeaceCoder, 10.02.2010 в 17:44.
|
|
10.02.2010, 17:54
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от PeaceCoder
|
строить стили на #id выгоднее
|
Чем? Кроме того, что поддерживать такую вёрстку труднее.
|
|
10.02.2010, 17:57
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
ой, кто заговорил о поддержке вёрстки х)) ты уж определись, либо мы постраиваемся под любую вёрстку, либо делаем вёртку, с которой удобно работать, но тогда сложные селекторы нафиг не сдались
__________________
.ня
|
|
10.02.2010, 17:58
|
|
Аспирант
|
|
Регистрация: 08.02.2010
Сообщений: 52
|
|
PeaceCoder,
ну я же тоже не придумываю. http://www.w3.org/TR/2009/PR-css3-se.../#id-selectors
Цитата:
|
What makes attributes of type ID special is that no two such attributes can have the same value in a conformant document, regardless of the type of the elements that carry them; whatever the document language, an ID typed attribute can be used to uniquely identify its element.
|
|
|
10.02.2010, 18:13
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
Проще говоря, querySelectorAll работает неправильно во всех браузерах? Сами подумайте или разработчики браузеров (таже мозилла, которая соблюдает стандарты) лоханулись, либо вы пургу несете.
Сообщение от Cr@ZyBoY
|
ну я же тоже не придумываю.
|
И я не придумываю. Ниже на пример посмотри
Цитата:
|
The following ID selector represents any element whose ID-typed attribute has the value "chapter1":
#chapter1
The following selector represents any element whose ID-typed attribute has the value "z98y".
*#z98y
|
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
|
|
10.02.2010, 18:37
|
|
Аспирант
|
|
Регистрация: 08.02.2010
Сообщений: 52
|
|
Цитата:
|
no two such attributes can have the same value (2подобных атрибута не могут иметь одинаковое значение)
|
и
Цитата:
|
represents any element whose ID-typed attribute has the value (представляет любой элемент, id которого равен...)
|
не взаимозаменяемы. То что вы написали - правда, но из этого не следует, что в документе могут существовать 2 элемента с одним id. Id для того и придумали, чтобы у элемента был уникальный опознавательный знак.
Я бы не стал доверять querySelectorAll как образцу правильных выборок - http://ejohn.org/blog/thoughts-on-queryselectorall/. Не удивлюсь, если и с #id они тоже накосячили.
|
|
10.02.2010, 18:58
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от PeaceCoder
|
Сами подумайте или разработчики браузеров (таже мозилла, которая соблюдает стандарты) лоханулись, либо вы пургу несете.
|
либо разработчики браузеров решили дать возможность получить все элементы с заданным id, либо пургу несешь ты
Cr@ZyBoY,
Сообщение от tenshi
|
либо мы постраиваемся под любую вёрстку, либо делаем вёртку, с которой удобно работать, но тогда сложные селекторы нафиг не сдались
|
|
|
10.02.2010, 18:58
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
Сообщение от Cr@ZyBoY
|
То что вы написали - правда, но из этого не следует, что в документе могут существовать 2 элемента с одним id.
|
Получается опять же все браузеры работают неправильно и отображают стили тоже не правильно? Не раз встречал сайты построенные на id'шниках, например #window и т.п. и что же получается стили применять надо только к первому в дереве элементу с этим id ? Нет. Как было описано выше стили применяются ко всем элементам с таким id ==> querySelectorAll работает тоже правильно и выводит все элементы с таким id. Еще читал, что qerySelectorAll это и есть движок того как браузер при прорисовке элемента получает для него все стили.
То что вы имеете ввиду, то это запрос вида "#id" и ничего больше. Вот он должен выводить только 1 элемент с первым попавшимся id в дереве. А если надо все элементы в таком же написании, то "*#id", но если фильтров в селекторе больше 1го, то уже явно должен быть список подходящих.
Сообщение от Cr@ZyBoY
|
Я бы не стал доверять querySelectorAll как образцу правильных выборок
|
Че вы вообще прицепились к Джону? У него селекторы немного багнуты, о чем я писал выше, о какой правильности может идти речь?
П.С. спорить на эту тему больше не буду. Каждый остается при своем мнении.
П.П.С В настоящем понимании id как таковой уже не имеет смысла, он аналогичен .class. Его давно ввели что бы можно было манипулировать элементами, сейчас же элементами можно манипулировать на прямую без id.
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
|
|
10.02.2010, 19:16
|
|
Аспирант
|
|
Регистрация: 08.02.2010
Сообщений: 52
|
|
Я тоже не хочу спорить насчёт этого - я делал свой движок по стандарту, чётко описанному на сайте w3. Если
querySelectorAll возвращает несколько элементов с одним id, что ж, пусть возвращает, меня это мало волнует.
x-yuri,
я не собираюсь ни под кого подстраиваться - я предпочитаю работать как минимум с валидной вёрсткой.
Последний раз редактировалось Cr@ZyBoY, 10.02.2010 в 19:19.
|
|
10.02.2010, 19:33
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
Сообщение от Cr@ZyBoY
|
Я тоже не хочу спорить насчёт этого - я делал свой движок по стандарту, чётко описанному на сайте w3.Если querySelectorAll возвращает несколько элементов с одним id, что ж, пусть возвращает, меня это мало волнует.
|
А вот тут вы противоречите себе. на запрос "#id3" Ваш движк выдает как раз таки 2 элемента, т.к. Вы не проверяете "простые" выборки, а используете querySelectorAll, который и выдает все элементы
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
|
|
|
|