|
|
|
| Добрый вечер.
Подскажите, зачем используют 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 тормозит или что-то делаю не так? | |
|
|
|
|
|
|
|
для: Jaroslav
(21.02.2014 в 19:27)
| | Если писать безграмотно, то тормозить будет на чем угодно.
jQuery не грязный JS, а тот же самый JS, и что onMouseOver="MyOver('1')", что $(".skd2").mouseover в обеих случаях будет выполняться JS-функция. Разница только в контексте, и в способе установки обработчика элементу. Причем ваш "быстрый" пример с кучей элементов с навешанными на них обработчиками, может еще реагировать на событие быстрее, но уж точно сожрет ресурсы впустую. Впрочем такого же пожерательства ресурсов можно и на jQuery сделать, поступая таким способом.
А если у вас этих div будет хотя бы с сотню, вы таже навешаете на них обработчики? Всегда, если есть возможность, а если нет подумайте о такой, делегируйте обработку элементов родителю. Не факт, что если на каждый элемент навешать кучу обработчиков, то все они обязательно наступят, но вот в пустую будут жрать ресурсы, это факт. | |
|
|
|
|
|
|
|
для: confirm
(21.02.2014 в 19:39)
| | Да какие ресурсы? Это такие копейки.. - js..
Ресурсы - это запросы к базе данных.
ладно, спасибо.. Подумаю, как оптимизировать..
просто сначала вручную было, на чистом js, посидел день. переписал на jqwery..
И стало только хуже :)) | |
|
|
|
|
|
|
|
для: Jaroslav
(21.02.2014 в 19:52)
| | Запомните раз и навсегда - не говорите чепухи, если не имеете понятий и знаний.
Как по вашему вообще выполняются программы, в частности как обрабатываются щелчки на элементах вашей страницы? Вы думаете само по себе происходит - есть какой-то тег, он как-то сам по себе ожидает пока курсор на него наползет, и как только так сразу кричать начнет "наехали"?
Чтобы не пороть такой чепухи, которую вы говорите, нужно изучать и разбираться вплоть до мелочей. Открой свою страницу в отладчике, посмотрите распределение ресурсов, все это отражение в памяти, и не элемент сам по себе определяет, что на него "наехали", а следит ПО обрабатывающее вашу страницу, и тоже не само по себе, а ресурсами выделенными ей системой. А что такое слежение, рассказывать долго, хотя знать это полезно, ибо если пороть такую чушь "Да какие ресурсы?", то рано или поздно вы с этой проблемой столкнетесь.
Стайер думает о секундах, а тот кто бегает на длинные дистанции обязан заботиться о грамотном расходовании энергии, и только когда наступает момент, тогда рывок.
Вряд ли вы понимаете даже что такое "запросы к базе данных" , а уж не понимая и не зная JS заявлять о "чепухе".... | |
|
|
|
|
|
|
|
для: confirm
(21.02.2014 в 20:03)
| | Благодарю за исчерпывающий ответ...
---
лучше бы не спрашивал... | |
|
|
|
|
|
|
|
для: Jaroslav
(21.02.2014 в 20:07)
| | Это точно, лучше подумать, углубиться в суть происходящего, и только по непонятному обращаться за разъяснением. А вот по незнанию молотить чушь, этого не стоит делать, ибо я вам сказал об азбучной истине, а вы в ответ "это чушь". Действительно тогда - какой смысл спрашивать. | |
|
|
|
|
|
|
|
для: Jaroslav
(21.02.2014 в 19:52)
| | >Да какие ресурсы? Это такие копейки.. - js..
>Ресурсы - это запросы к базе данных.
вы явно путаете тёплое с мягким. | |
|
|
|