Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Применение Jqwery
 
 автор: Jaroslav   (21.02.2014 в 19:27)   письмо автору
 
 

Добрый вечер.

Подскажите, зачем используют jqwery?
на рабочем сайте столкнулся с тем, что чистый javascript работает визуально быстрее, чем обычные .click(), .mouseover(), .mouseout() на jqwery, применяемый к списку классов.

Т.е. например:



<div class="skd2">1</div>
<div class="skd2">2</div>
<div class="skd2">3</div>
<div class="skd2">4</div>
<div class="skd2">5</div>
<div class="skd2">6</div>
<div class="skd2">7</div>
<div class="skd2">8</div>
<div class="skd2">9</div>

<script type="text/javascript">

 $(".skd2").mouseover(function() { ... }); 
 $(".skd2").mouseout(function() {  ... });                              
 $(".skd2").click(function() {  ... });

</script>




работает медленнее, чем:




<div class="skd2" onMouseOver="MyOver('1')" onMouseOut="MyOut('1')" onClick="MyClick('1')">1</div>
<div class="skd2" onMouseOver="MyOver('2')" onMouseOut="MyOut('2')" onClick="MyClick('2')">2</div>
<div class="skd2" onMouseOver="MyOver('3')" onMouseOut="MyOut('3')" onClick="MyClick('3')">3</div>
<div class="skd2" onMouseOver="MyOver('4')" onMouseOut="MyOut('4')" onClick="MyClick('4')">4</div>
<div class="skd2" onMouseOver="MyOver('5')" onMouseOut="MyOut('5')" onClick="MyClick('5')">5</div>
<div class="skd2" onMouseOver="MyOver('6')" onMouseOut="MyOut('6')" onClick="MyClick('6')">6</div>
<div class="skd2" onMouseOver="MyOver('7')" onMouseOut="MyOut('7')" onClick="MyClick('7')">7</div>
<div class="skd2" onMouseOver="MyOver('8')" onMouseOut="MyOut('8')" onClick="MyClick('8')">8</div>
<div class="skd2" onMouseOver="MyOver('9')" onMouseOut="MyOut('9')" onClick="MyClick('9')">9</div>

<script type="text/javascript">
 
  function MyOver(x) {} 
  function MyOut(x) {} 
  function MyClick(x) {} 

</script>



Кода больше.. но работает быстрее...
Это всегда так jqwery тормозит или что-то делаю не так?

  Ответить  
 
 автор: confirm   (21.02.2014 в 19:39)   письмо автору
 
   для: Jaroslav   (21.02.2014 в 19:27)
 

Если писать безграмотно, то тормозить будет на чем угодно.
jQuery не грязный JS, а тот же самый JS, и что onMouseOver="MyOver('1')", что $(".skd2").mouseover в обеих случаях будет выполняться JS-функция. Разница только в контексте, и в способе установки обработчика элементу. Причем ваш "быстрый" пример с кучей элементов с навешанными на них обработчиками, может еще реагировать на событие быстрее, но уж точно сожрет ресурсы впустую. Впрочем такого же пожерательства ресурсов можно и на jQuery сделать, поступая таким способом.

А если у вас этих div будет хотя бы с сотню, вы таже навешаете на них обработчики? Всегда, если есть возможность, а если нет подумайте о такой, делегируйте обработку элементов родителю. Не факт, что если на каждый элемент навешать кучу обработчиков, то все они обязательно наступят, но вот в пустую будут жрать ресурсы, это факт.

  Ответить  
 
 автор: Jaroslav   (21.02.2014 в 19:52)   письмо автору
 
   для: confirm   (21.02.2014 в 19:39)
 

Да какие ресурсы? Это такие копейки.. - js..
Ресурсы - это запросы к базе данных.
ладно, спасибо.. Подумаю, как оптимизировать..
просто сначала вручную было, на чистом js, посидел день. переписал на jqwery..
И стало только хуже :))

  Ответить  
 
 автор: confirm   (21.02.2014 в 20:03)   письмо автору
 
   для: Jaroslav   (21.02.2014 в 19:52)
 

Запомните раз и навсегда - не говорите чепухи, если не имеете понятий и знаний.
Как по вашему вообще выполняются программы, в частности как обрабатываются щелчки на элементах вашей страницы? Вы думаете само по себе происходит - есть какой-то тег, он как-то сам по себе ожидает пока курсор на него наползет, и как только так сразу кричать начнет "наехали"?

Чтобы не пороть такой чепухи, которую вы говорите, нужно изучать и разбираться вплоть до мелочей. Открой свою страницу в отладчике, посмотрите распределение ресурсов, все это отражение в памяти, и не элемент сам по себе определяет, что на него "наехали", а следит ПО обрабатывающее вашу страницу, и тоже не само по себе, а ресурсами выделенными ей системой. А что такое слежение, рассказывать долго, хотя знать это полезно, ибо если пороть такую чушь "Да какие ресурсы?", то рано или поздно вы с этой проблемой столкнетесь.

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

Вряд ли вы понимаете даже что такое "запросы к базе данных" , а уж не понимая и не зная JS заявлять о "чепухе"....

  Ответить  
 
 автор: Jaroslav   (21.02.2014 в 20:07)   письмо автору
 
   для: confirm   (21.02.2014 в 20:03)
 

Благодарю за исчерпывающий ответ...
---
лучше бы не спрашивал...

  Ответить  
 
 автор: confirm   (21.02.2014 в 20:17)   письмо автору
 
   для: Jaroslav   (21.02.2014 в 20:07)
 

Это точно, лучше подумать, углубиться в суть происходящего, и только по непонятному обращаться за разъяснением. А вот по незнанию молотить чушь, этого не стоит делать, ибо я вам сказал об азбучной истине, а вы в ответ "это чушь". Действительно тогда - какой смысл спрашивать.

  Ответить  
 
 автор: psychomc   (21.02.2014 в 23:18)   письмо автору
 
   для: Jaroslav   (21.02.2014 в 19:52)
 

>Да какие ресурсы? Это такие копейки.. - js..
>Ресурсы - это запросы к базе данных.

вы явно путаете тёплое с мягким.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования