2013-03-06 2 views
2

Что такое недостатки и преимущества цепочки методов в jQuery?Что такое недостатки и преимущества цепочки методов в jQuery?

Это быстрее, чем повторное объявление селектора?

+0

Чтобы сделать это более конкретным вопросом: цепочка * в отличие от чего? * – deceze

+0

Я сказал на второй строке, напротив повторного объявления селектора. –

+0

Как насчет 'i = $ ('foo'); i.bar(); i.baz(); '? Вы считаете эту цепочку? Потому что это просто длинная рука для цепных операций. – deceze

ответ

2

Скорее всего, преимущества,

, что это делает ваш код коротким и легко manage.It дает лучшую производительность (быстрее). И цепь начинается слева направо. Поэтому большинство остальных будет называться первым и так далее.

При использовании цепочки JQuery должен найти элементы один раз, и он выполнит все связанные функции один за другим.

Недостатком цепочки может быть чрезмерное использование излишков, что может привести к ухудшению производительности.

например: - Код 1:

​$(document).ready(function(){ 
    $('#myContent').addClass('hello'); 
    $('#myContent').css('color', 'blue'); 
    $('#myContent').fadeOut('fast'); 
});​ 

Код 2:

$(document).ready(function(){ 
    $('#myContent').addClass('hello') 
      .css('color', 'blue') 
      .fadeOut('fast');  
});​ 

Оба эти кода делает то же самое. и код 2 использует цепочку, и он быстрее и короче в коде. И в Code 1 JQuery должен выполнить поиск по всей DOM, чтобы найти элемент, и после этого он выполняет функцию на нем.

+2

Я понимаю, что вы получаете, но говоря, что jQuery «должен искать всю DOM» в первом примере немного вводит в заблуждение ... внутренне jQuery будет просто называть getElementById() в этом случай, который является очень быстрой операцией, хотя это все равно похоже на поиск массива, поэтому второй пример очень мал. Это будет иметь большее значение с селекторами классов и другими более сложными селекторами, особенно в старых браузерах. –

1

Преимущества метода: цепочки

  1. Селектор только оцениваемые один раз для нескольких операций. Лучшая производительность, меньший код.
  2. Результат выбора может использоваться для нескольких методов без необходимости привязывать его к локальной переменной. Более компактный код.
  3. Несколько методов можно более компактно разместить на одной линии.
  4. Гораздо более компактный, особенно если вы хотите работать с последовательными различными результатами, такими как $(this).next().find("span.title").closest(".section").hide();. Без цепочки вам понадобится четыре разных локальных переменных, где этого не потребуется.

Недостатки цепочки:

  1. Результат селектор не был сохранен в локальной переменной для более сложных видов применения, которые не могут быть выполнены только с цепочкой.
  2. Слишком много последовательных цепочечных методов на одной линии может скомпрометировать читаемость кода, если оно распространяется на очень длинную строку кода. (Можно по-прежнему использовать цепочку, но просто вставляйте случайные разрывы строк в цепочку, чтобы избежать этого).
+0

Спасибо за ваш ответ jfriend –

1

Да, это может быть быстрее, но не по сравнению с хранением объекта jQuery в переменной, что так же быстро.

например.это:

var elements = $('.myClass').find('p'); 
elements.next() 

должен быть столь же быстро, как это:

$('.myClass').find('p').next()

Большую часть времени это сводится к читаемости ... иногда метод цепочки делает код более удобным для чтения, но если вы получаете унесенный, он может сделать это меньше читаемый.

+0

благодарит вас за ответ Matt B. –

Смежные вопросы