Скорость переборки

Статус
Закрыто для дальнейших ответов.

czp

czp
Регистрация
05.06.2011
Сообщения
635
относительно такой вот вопрос, если к примеру на странице около 350 тегов, и по циклу их все перебрать и назначить на каждый тег onclick событие, сильно тормазнет? кто то встречался с большим обьемом перебора тегов или идов?
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
А зачем перебирать циклом? Не проще отслеживать онклик на тегах (по классу например) и в случае онклика делать нужные действия?
 

czp

czp
Регистрация
05.06.2011
Сообщения
635
оо!!! как так! я такого приема не знаюо)) как делаeтcя? без джейквери только, и он всеровно не поможет мне, так как там классы разные и 350 элемов класс может дублироваться до 5 раз и не более

забыл сказать что класс генерится рандомно пхп там не подвязать на него
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
Ну без jQ не подскажу.
Можно до элемента добрать и без класса, по пути, это чуть подольше.
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Для нормальных "бро" имеются функции querySelector() и querySelectorAll(). Первая возвращает первый подходящий элемент, вторая - массив всех подходящих элементов. Аргументы - строка селекторов, как у $() из jQuery.

Ну, естественно, в ишаке не работает... :mad:
 

czp

czp
Регистрация
05.06.2011
Сообщения
635
Ну без jQ не подскажу.
ну так правильно Джейквери все классы перебирает тоже самое что и по тегам))) сколько тегов и им присвоено классов он их всех по циклу прогоняет вот и все, шило на мыло

querySelector() и querySelectorAll()
потестю)
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
ну так правильно Джейквери все классы перебирает тоже самое что и по тегам))) сколько тегов и им присвоено классов он их всех по циклу прогоняет вот и все, шило на мыло
Т.е. на чистом JS такую конструкцию не написать?
Код:
$('div#abc apan').live('click', function(){})
 

czp

czp
Регистрация
05.06.2011
Сообщения
635
написать)) я за то что :
когда в джейквери ты по классу вбиваешь, тоже самое что и на чистом я по циклу перебираю их, вообщем что джейквери по циклу классы переберет и что я тоже по циклу переберу одно и тоже.
 

czp

czp
Регистрация
05.06.2011
Сообщения
635
Код:
<div onclick="myFunction();"></div>
как вариант можно сделать так, что бы ПХП генерил, тогда все вопросы отпадают, но так вроде уже не модно делать? гугл и контакт активно так юзают такую структуру, ваше мнение?
 

cyber

Member
Регистрация
29.04.2012
Сообщения
13
да можно как бы и без пхп обойтись (если немного подумать).
Код:
var allTag=document.getElementsByTagName(tagName);
i=allTag.length;
while(i--){
allTag[i].onclick=function (){
//а тут вызываете ту функцию которую вам нужно
}
}
 

czp

czp
Регистрация
05.06.2011
Сообщения
635
да вы шо, удивили? вы внимательно читали? если будет больше 300 элемов лаганет у кого слабый комп
 

czp

czp
Регистрация
05.06.2011
Сообщения
635
пробовали, не зря и была создана эта тема
 

czp

czp
Регистрация
05.06.2011
Сообщения
635
пробовали, не зря и была создана эта тема
почему то ощущение что вы делали так
Код:
var allTag=document.getElementsByTagName(tagName);
for(var i=0;i<allTag.length;i++){

}
я даже и отвечать не хочу, не в обиду

закройте тему пожалуйста, модераторы
 

ArhAngel

Well-Known Member
Регистрация
07.05.2011
Сообщения
378
Относительно первого самого вопроса - встечался с большим колличеством тегов, работало без торомозов, юзал jquery, селектор через тег и класс
$("span.button") - к примеру. (функциия была простенькая вроде скрыть/раскрыть, не не суть дело)
 

cyber

Member
Регистрация
29.04.2012
Сообщения
13
ТС скажу тебе на последок, что все что можно сделать через jQuery можно сделать и на чистом js , а если не можеш сделать сам то береш открываеш бибилотеку jQuery и ищиш как они это реализовали..
 

ArhAngel

Well-Known Member
Регистрация
07.05.2011
Сообщения
378
Это и так ясно, коль JQuery написан на томже js, да думаю и автор вопроса тоже об этом знает...
В своем предидущем посте описал случай, когда нужно было выводить кучу сообщений на экран, но все в развернутом виде выводить - это слишком(( вот и применил блоки которые при клике на них разворачиваются (плагин акордеон не юзал, сам писал, но там все легко), суть в том, что даже при > 1000 сообщений скрипты не тормозили, только сама визуализация подтормаживала на моем старом буке, а на норм компе - все ок было
 

cyber

Member
Регистрация
29.04.2012
Сообщения
13
Это и так ясно, коль JQuery написан на томже js, да думаю и автор вопроса тоже об этом знает...
В своем предидущем посте описал случай, когда нужно было выводить кучу сообщений на экран, но все в развернутом виде выводить - это слишком(( вот и применил блоки которые при клике на них разворачиваются (плагин акордеон не юзал, сам писал, но там все легко), суть в том, что даже при > 1000 сообщений скрипты не тормозили, только сама визуализация подтормаживала на моем старом буке, а на норм компе - все ок было
а как вы реализовали если не секрет?
подменой блоков?
 

ArhAngel

Well-Known Member
Регистрация
07.05.2011
Сообщения
378
//блок каждого сообщения
<div class = "message">
<span class = "title">title_message</span>
<div class = "text_message">
Текст сообщения
</div>
</div>

//Стиль
<style>
div.text_message{ ...; display: none; }
</style>


//Это в ready
$("span.title").click(function (){
// через this находим предка - родительский блок, потом его потомка div.text_message
//тут по условию если текст скрыт - slideDown(500); если раскрыт - slideUp(500);
});


Все упростил, но смысл понятен. Перебор дерева можно организовать и средствами простого JS, только сложнее все выйдет и кода куда больше надо - но производительность врядле разная будет.
 
Статус
Закрыто для дальнейших ответов.
Верх Низ