Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Скорость Выбоки jQuery (https://javascript.ru/forum/jquery/6954-skorost-vyboki-jquery.html)

x-yuri 14.01.2010 19:20

Цитата:

Сообщение от Kolyaj
PeaceCoder,
а зачем такие селекторы вообще нужны?

ну, по-моему, очевидно. Чтобы можно было сказать: "А вот мой фреймворк..."

Цитата:

Сообщение от PeaceCoder
а зачем селекторы вообще нужны? если есть селекторы, значит надо их сделать на максимум

мне это напомнило легенду о мастерах Мурамаса и Масамунэ

PeaceCoder 14.01.2010 22:36

Цитата:

Сообщение от x-yuri
не это напомнило легенду о мастерах Мурамаса и Масамунэ

плохое сравнение. я же не делаю то что быдет хуже jQ а наоборот.
Вот еще один пример применения новой команды.
Допустим есть блок в котором хаотично расположены элементы с нужным классом. И допустим в этих элементах куча других элементов. Сколько их неизвестно. Задача: нужно, например, чтото делать с элементом нужного класса (необязательно :hover|:active изменение стилей), когда мышью водят/кликают над этим элементом при этом надо получить этот элемент и не факт что в этом спец элементе не будет такого же спец элемента. как вы будете решать такую задачу ? а выбрать надо всего 1 нужный блок причем с определенными параметрами
<div id='блок'>
хаотично расположенные элементы (много, в том числе и спец блоки с нужным классом)
  <div class="нужныйБлок">
  тут куча элементов и детей + тут тоже могут быть теже "нужные блоки"
  </div>
  ...
</div>

Kolyaj 15.01.2010 09:14

Цитата:

Сообщение от PeaceCoder
как вы будете решать такую задачу ?

Когда говорится, что селекторы не нужны, имеется в виду, что они не нужны при нормальной вёрстке. А если по-хорошему верстать, то и в самом CSS-то каскады не нужны, не то, что в JavaScript.

Я уж не говорю о том, что никаких #id-шников в CSS быть не должно, хоть это к теме и не относится, больной вопрос у меня просто :)

micscr 15.01.2010 11:47

Цитата:

Сообщение от Kolyaj (Сообщение 40636)
Я уж не говорю о том, что никаких #id-шников в CSS быть не должно, хоть это к теме и не относится, больной вопрос у меня просто :)

почему? (в смысле быть не должно)

Kolyaj 15.01.2010 12:06

У селекторов с #id очень высокий вес и их практически невозможно перебить селектором без какого-нибудь #id. Попадаются умники, которые каскады из #id-шников делают. Теперь представь ситуацию, верстальщик понаписал правил для списков, вроде
#page #content ul { list-style-type: none; }
А тебе понадобилось на одной странице сделать список с буллетами. Ты не сможешь просто написать
.mylist { list-style-type: circle; }
Точнее сначала ты такое напишешь, потом будешь разбираться, почему не работает, потом обнаружишь, что вышестоящее правило в 20 раз сильнее, и чтобы его перебить, тебе нужно добавить в селектор еще 2 #id-шника. А если нужно сделать специфический блок, которые может находится в любом месте страницы, то всё становится ещё хуже.

micscr 15.01.2010 12:36

Kolyaj спасибо.

PeaceCoder 15.01.2010 18:24

Хе хе. а в jQ боооольшой баг =)))
создал документик с 1 DIV#id123
и сделал такую выборку
alert('Элемент #id1234567890 в документе '+(document.getElementById('id1234567890') ? '':'не')+'существует');
T=(new Date()).getTime();

  for (i=0;i<1000;i++) $('#id1234567890 TABLE DIV B A U B A TABLE DIV *');

  alert('Время выборки: '+((new Date()).getTime()-T)/1000+'ms');


Как вам такой баг? Вы еще пользуетесь jQ?

Octane 15.01.2010 18:48

jQuery-ненавистнег

PeaceCoder 15.01.2010 18:55

Цитата:

Сообщение от Octane
jQuery-ненавистнег

не. не ненависнег. просто оч много багов в нем. вот и сообщаю. много лишней работы делает.
Это видно по примеру. элемента нет а выборка занимает почти 1 мс в MZ. А ие там вообще загнется.
В связи с этим сейчас думаю как быстро пресечь вот такие вот баги.

Michael83 15.01.2010 19:14

Цитата:

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

вот например http://www.marimedia.ru/js/main.js
функция initTopMenu начиная со строки
$('#navigation .nav-item').each( function()
хотя пример не очень там внутри цикла кроме выборки еще и другая логика

В общем я не говорю, что вы зря этим занимаетесь, здесь в другом дело - как часто вообще люди применяют НАСТОЛЬКО сложные серекторы? нужно ли это? ведь как писали выше если нормально сверстано, то и запросы проще будут. и ваши выдуманные ужасные случаи когда там элемент затерялся среди других и его выцеплять надо чуть ли не по номеру строки в файле это такая редкость, что решать такие проблемы надо не такими же ужасными серекторами а изменением верстки.

Мне очень интересно что у вас получится.


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