Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Carbon.JS JavaScript framework (https://javascript.ru/forum/project/7571-carbon-js-javascript-framework.html)

PeaceCoder 10.02.2010 17:33

Цитата:

Сообщение от Cr@ZyBoY
попридержите коней. Откуда у вас в html-коде взялось 2 элемента с одним id? Это прямое нарушение стандарта.

Прямое не прямое, querySelectorAll выдает то, что я написал.
Да и читал на webo.in, что строить стили на #id выгоднее + как вы не крутите а стили распространяются на все одинаковые #id а не на только первый попавшийся... Да и по вашим словам такой запрос вообще бессмыслен, а такое есть на самом деле.
Цитата:

Сообщение от Cr@ZyBoY
По поводу селектора "* SPAN I + SPAN DIV B + *"

Это я привел в пример, что бы было над чем подумать, если селектор будет содержать с одной или с другой стороны запрос вида "[atribute=abrakadabra]", то движок просто рухнет, если нет поддержки querySelectorAll, да и тест на то как работает "+" в чистом движке. Как видно в jQ неправильно.

Kolyaj 10.02.2010 17:54

Цитата:

Сообщение от PeaceCoder
строить стили на #id выгоднее

Чем? Кроме того, что поддерживать такую вёрстку труднее.

tenshi 10.02.2010 17:57

ой, кто заговорил о поддержке вёрстки х)) ты уж определись, либо мы постраиваемся под любую вёрстку, либо делаем вёртку, с которой удобно работать, но тогда сложные селекторы нафиг не сдались

Cr@ZyBoY 10.02.2010 17:58

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.

PeaceCoder 10.02.2010 18:13

Проще говоря, 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

Cr@ZyBoY 10.02.2010 18:37

Цитата:

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 они тоже накосячили.

x-yuri 10.02.2010 18:58

Цитата:

Сообщение от PeaceCoder
Сами подумайте или разработчики браузеров (таже мозилла, которая соблюдает стандарты) лоханулись, либо вы пургу несете.

либо разработчики браузеров решили дать возможность получить все элементы с заданным id, либо пургу несешь ты ;)

Cr@ZyBoY,
Цитата:

Сообщение от tenshi
либо мы постраиваемся под любую вёрстку, либо делаем вёртку, с которой удобно работать, но тогда сложные селекторы нафиг не сдались


PeaceCoder 10.02.2010 18:58

Цитата:

Сообщение от Cr@ZyBoY
То что вы написали - правда, но из этого не следует, что в документе могут существовать 2 элемента с одним id.

Получается опять же все браузеры работают неправильно и отображают стили тоже не правильно? Не раз встречал сайты построенные на id'шниках, например #window и т.п. и что же получается стили применять надо только к первому в дереве элементу с этим id ? Нет. Как было описано выше стили применяются ко всем элементам с таким id ==> querySelectorAll работает тоже правильно и выводит все элементы с таким id. Еще читал, что qerySelectorAll это и есть движок того как браузер при прорисовке элемента получает для него все стили.
То что вы имеете ввиду, то это запрос вида "#id" и ничего больше. Вот он должен выводить только 1 элемент с первым попавшимся id в дереве. А если надо все элементы в таком же написании, то "*#id", но если фильтров в селекторе больше 1го, то уже явно должен быть список подходящих.
Цитата:

Сообщение от Cr@ZyBoY
Я бы не стал доверять querySelectorAll как образцу правильных выборок

Че вы вообще прицепились к Джону? У него селекторы немного багнуты, о чем я писал выше, о какой правильности может идти речь?

П.С. спорить на эту тему больше не буду. Каждый остается при своем мнении.
П.П.С В настоящем понимании id как таковой уже не имеет смысла, он аналогичен .class. Его давно ввели что бы можно было манипулировать элементами, сейчас же элементами можно манипулировать на прямую без id.

Cr@ZyBoY 10.02.2010 19:16

Я тоже не хочу спорить насчёт этого - я делал свой движок по стандарту, чётко описанному на сайте w3. Если
querySelectorAll возвращает несколько элементов с одним id, что ж, пусть возвращает, меня это мало волнует.

x-yuri,
я не собираюсь ни под кого подстраиваться - я предпочитаю работать как минимум с валидной вёрсткой.

PeaceCoder 10.02.2010 19:33

Цитата:

Сообщение от Cr@ZyBoY
Я тоже не хочу спорить насчёт этого - я делал свой движок по стандарту, чётко описанному на сайте w3.Если querySelectorAll возвращает несколько элементов с одним id, что ж, пусть возвращает, меня это мало волнует.

А вот тут вы противоречите себе. на запрос "#id3" Ваш движк выдает как раз таки 2 элемента, т.к. Вы не проверяете "простые" выборки, а используете querySelectorAll, который и выдает все элементы ;)


Часовой пояс GMT +3, время: 19:16.