$('body').addClass('done'), похоже, не имеет никакого эффекта

Я читаю jQuery в действии 2-е издание, пока что действительно хорошо, пока не столкнулся с Разделом: 3.3.2 Перемещение и копирование элементов и чтение о копировании и перемещении. Пример Chap-3 \chapter3\lab.move.and.copy.html) имеет следующий оператор:

$('body').addClass('done');

Я не понимаю, что он делает в этом примере, как будто я закомментировал это, пример все еще работает просто отлично.

Кроме того, что делают эти два утверждения?

var operation = $('[name=operations]:checked').val();
targets$[operation](sources$);

Эта часть книги затуманена и плохо написана. Это должно быть расширено объяснением к примеру. Спасибо.

2 ответа

$('body').addClass('done') делает именно то, что, кажется, делает из документации: добавление CSS-класса "done" в bodyelement`. Если у вас есть правила стиля, связанные с этим классом, вы увидите разницу; если вы этого не сделаете, вы не будете. Здесь у нас есть правила стиля, делающие текст внутри элемента body зеленым, если он имеет этот класс: http://jsbin.com/ijufis

Re:

var operation = $('[name=operations]:checked').val();
targets$[operation](sources$);

Не прочитав книгу, я могу только сказать вам, что делают эти строки:

  1. $('[name=operations]:checked').val() получает значение флажка с именем operations, но только если он отмечен (возвращается undefined иначе).

  2. targets$[operation](sources$) ищет недвижимость на targets$ на основе значения в operation а затем вызывая значение этого свойства как функцию, передавая значение переменной source$ (что бы это ни было).

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

Реальная причина, по которой я это делаю, заключается в том, что автоматизированные тесты могут перемещаться по сайту как можно быстрее. Некоторые тестовые наборы имеют неприятную привычку думать, что страница загружается, когда она все еще рендерится, и тогда им не удастся щелкнуть что-то, чего еще нет. У меня есть люди, ждущие автоматизации, ждут флага "выполнено", прежде чем перейти к следующему этапу теста. Работает довольно хорошо, и намного быстрее, чем "нажмите на ссылку и подождите 10 секунд".

Примечание: добавление CSS-класса в элемент body из Javascript в настоящее время считается плохой формой. Это в значительной степени означает, что вы получите переформатирование всей страницы. Не самый мудрый выбор в целом, но вдвойне проклятый, если вы уже пытаетесь компенсировать медленную страницу.

Другие вопросы по тегам