Показать сообщение отдельно
  #1 (permalink)  
Старый 15.11.2017, 05:28
Новичок на форуме
Отправить личное сообщение для abzalb Посмотреть профиль Найти все сообщения от abzalb
 
Регистрация: 15.11.2017
Сообщений: 5

Помогите разобрать код jQuery
Добрый день.

Есть один пример страницы на jQuery. Не могу понять и к тому же найти описание данного метода в учебниках по JS и jQuery.

Вот кусок html, который связан с кодом jQ.

<div class="panel box">
<h2>Test Subjects</h2>

<div class="test-subjects clearfix">
<div class="test-subject">bla-bla</div>
<div class="test-subject"><img src="images/limes.png" alt=""/>
</div>
<div class="test-subject">bla-bla.</div>
<div class="test-subject"><img src="images/belt.png" alt=""/>
</div>
</div>

</div>
у нас есть 4 элемента div с классом "test-subject".
в коде собираем набор этих элементов в переменной:
var $testSubjects = $('.test-subject');

далее есть обработчик нажатия на кнопку, который переменной effect присваивает одно из значении: 'show', 'hide', 'toggle'.
это строковые значения.

теперь сам не понятный кусок кода:
if ((effect === 'show' || effect === 'hide' || effect === 'toggle') && speed === 'none') {
$testSubjects[effect]();
}

мне не понятен вызов: $testSubjects[effect]();
по результату работы кода я понял, что данный вызов означает следующее:
для всех элементов из набора $testSubjects применить метод show(), если effect==='show', или метод hide(), если effect==='hide'.

не в одной документации не нашел описание данного метода вызова методов high и тд.

строку $testSubjects[effect](); заменил на ниже указанный код и получил этот же результат для show и hide. этот подход мне более понятен чем $testSubjects[effect]()

$testSubjects.each(function(){
if (effect === 'show') {
$(this).show();
} else {
if (effect === 'hide') {
$(this).hide();
}
}
});

Если кто знает и может дать ссылку на описание такой оптимизации кода вышлите пожалуйста.
Спасибо.
Ответить с цитированием