|
Programmer ASP.NET MVC C# |
Programming
|
||
Предыдущий | Следующий | |
Здесь приведен ряд очень простых правил, следуя которым, ваше сотрудничество с jQuery не будет омрачено скрежетом напрягшегося браузера. Конечно, не так часто случается, что скорость работы javascript’а оказывается критичной, однако такое все же может произойти, и произойти в самый неподходящий момент. Поэтому, лучше держать эти правила в голове и не пренебрегать ими. 1. Эффективный поиск элементовБыстрее всего происходит поиск элементов по идентификатору: $('#someId'), вторым по быстродействию, является поиск по имени тега: $('tagName'). Высокая скорость их выполнения связана с тем, что для их реализации используются внутренние функции javascript: getElementById() и getElementsByTagName(). В связи с этим, появляются несколько правил. (Для большей наглядности, укажу текст страницы, к которому будут применен JS-код из примеров) <divid="content"> 1. Если вы ищете один элемент, используйте поиск по идентификатору: 2. Если вы ищете группу элементов, указывайте ближайшего общего родственника, обладающего идентификатором: 3. Если вы ищете элементы по классу, указывайте имя тега: Из всего сказанного, можно вывести два основных правила: И еще, не пытайтесь улучшить поиск по id с помощью следующих комбинаций: 2. Используйте результат поиска элементов повторноНе следует производить поиск одних и тех же элементов снова и снова, это достаточно дорогостоящая процедура, даже если вы используете самый быстрый селектор: $('#myElement').bind('click', function(){...});
var myElement = $('#myElement');
Если на протяжении работы вашего скрипта часто используются одни и те же элементы, то будет разумно найти эти элементы только один раз и сохранить результат в глобальной переменной: window.elements;
$('#myForm input:checkbox') // все флажки
myList = $('#myList'); 3. Избегайте лишних манипуляций c DOMОсновной идеей здесь является то, что если вы хотите внести ряд изменений на странице (добавить/изменить элемены), проделывайте эти манипуляции локально и только после этого вносите изменения в DOM. Например, если вы хотите добавить в список сто новых элементов, то ошибочным будет делать это поэлементно: var top_100_list = [...]; // содержимое новых элементов for (var i=0; i< top_100_list.length; i++)
var top_100_list = [...]; // содержимое новых элементов for (var i=0; i< top_100_list.length; i++)
var top_100_list = [...]; // содержимое новых элементов for (var i=0; i< top_100_list.length; i++)
4. Используйте делегирование событийИногда, приходится устанавливать одинаковые обработчики событий на большую группу элементов. Например, может потребоваться установить обработчики нажатия мышью, элементам списка. В таких случаях, вместо того, чтобы устанавливать обработчики на каждый элемент списка, можно установить один обработчик на сам список. Как известно, стандартные события javascript, вызванные на каком-либо элементе, затем вызываются на всех его предках (родительском элементе, затем прародительском и.т.д). Поэтому, после того, как событие произойдет на конкретном элементе списка, оно будет вызвано на объекте самого списка. Понять, у кого именно произошло событие, поможет передаваемый в обработчик объект event, а точнее, его свойство event.target. Оно всегда содержит DOM-объект первоначального источника события:
5. Используйте ООПОдна из проблем разработки на джава скрипте, это то что все как правило пишут в отдельном набор каких нибудь функций в глобальном контексте и когда файлов таких стает несколько то функции могут переопределять друг друга по случайности. Выход с данной ситуации это создавать объект по имени файла или же другим понятным именем. Те файлы (объекты) что много раз переиспользуются лучше назвать какими то более абстрактными вещами (например ARRAY_UTILS.js), файлы в которых есть индивидуальный для страницы функционал лучше назвать по названию самой страницы, то есть если у нас страницы называется Report.aspx то логично к ней создать js файл с объектом var REPORT_PAGE_CLASS = function() { $(function() { var REPORT_PAGE = new REPORT_PAGE_CLASS(); И дальше если мы используем в HTML разметке вставки с кода, то будем обращаться к объекту REPORT_PAGE. |