Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

$(document).delegate("a", "mouseover", linkHandler);

Или сначала применить метод

bind
к статической части документа, а затем с помощью метода
delegate
обработать динамически изменяемую часть:

// Статические обработчики событий для статических ссылок

$("а").bind("mouseover", linkHandler);

// Динамические обработчики
событий для фрагментов документа,

// которые изменяются динамически

S(".dynamic").delegate("a", "mouseover", linkHandler);

Подобно тому, как метод

bind
имеет версию с тремя аргументами, позволяющую указать значение свойства
data
объекта события, метод
delegate
имеет версию с четырьмя аргументами, позволяющую то же самое. При использовании этой версии дополнительные данные следует передавать в третьем аргументе, а функцию обработчика - в четвертом.

Важно понимать, что динамические события основаны на механизме всплытия. К тому моменту, когда оно всплывет до объекта документа, оно может пройти через множество статических обработчиков. А если какой-либо из этих обработчиков вызовет метод

cancelBubble
объекта
Event
, динамический обработчик так и не будет вызван.

Объект

jQuery
имеет метод
live
, который также можно использовать для регистрации динамических обработчиков событий. Метод
live
устроен немного сложнее, чем метод
delegate,
но он, как и метод
bind,
имеет версии с двумя и тремя аргументами, которые чаще всего используются на практике. Два вызова метода
delegate,
показанные выше, можно было бы заменить следующими вызовами метода
live
:

$("а").live("mouseover", linkHandler);

$("а", $(".dynamic")).live("mouseover”, linkHandler);

Когда вызывается метод

live,
элементы, находящиеся в объекте
jQuery
, в действительности никак не используются. Что имеет значение, так это строка селектора и объект контекста (первый и второй аргументы функции
$
), использовавшиеся при создании объекта
jQuery
. Эти значения доступны в виде свойств selector и context объектов
jQuery
(раздел 19.1.2). Обычно функция
$
вызывается с единственным аргументом, а роль контекста в этом случае играет текущий документ. То есть при использовании объекта х типа
jQuery
следующие две строки можно считать эквивалентными:

х.live(type,handler);

$(x.context).delegate(x.selector, type, handler);

Для удаления динамических обработчиков событий используются методы

die
и
undelegate.
Метод
die
может вызываться с одним или с двумя аргументами. Если
методу передать единственный аргумент, определяющий тип события, он удалит все динамические обработчики событий, соответствующие селектору и типу событий. А если передать тип события и функцию обработчика, он удалит только указанный обработчик. Например:

$('a').die('mouseover'); // Удалит все динамические обработчики

// события mouseover из элементов <а>

$('a' ).die( mouseover', linkHandler); // Удалит только указанный динамический обработчик

Метод

undelegate
действует аналогично методу
die,
но более явно отделяет контекст (элементы, в которых был зарегистрирован внутренний обработчик) и строку селектора. Вызовы метода
die
выше можно было заменить вызовами метода
undelegate,
как показано ниже:

$(document).undelegate('а'); // Удалит все динамические обработчики из элементов <а>

$(document).undelegate('а', ’mouseover); // Удалит динамические обработчики

// события mouseover

$(document).undelegate('а', ’mouseover’, linkHandler); // Указанный обработчик

Наконец, метод

undelegate
может также вызываться вообще без аргументов. В этом случае он удаляет все динамические обработчики, привязанные к выбранным элементам.

19.5. Анимационные эффекты

В главе 16 демонстрировалось, как можно управлять стилями CSS в элементах документа. Например, устанавливая CSS-свойство

visibility
, можно заставлять элементы появляться и скрываться. В разделе 16.3.1 было показано, как, управляя стилями CSS, можно воспроизводить анимационные эффекты. Например, вместо того, чтобы просто сделать элемент невидимым, можно постепенно уменьшать значение его свойства
opacity
в течение половины секунды и заставить его исчезать плавно. Подобные визуальные эффекты оставляют у пользователей более приятные впечатления, и библиотека jQuery упрощает их реализацию.

Объект

jQuery
определяет методы воспроизведения основных визуальных эффектов, такие как
fadeIn
и
fadeOut.
Кроме них он определяет также метод
animate,
позволяющий воспроизводить более сложные эффекты. В следующих подразделах описываются и методы воспроизведения простых эффектов, и более сложный универсальный метод
animate.
Однако для начала познакомимся с некоторыми общими особенностями механизма анимационных эффектов в библиотеке jQuery.

Каждый анимационный эффект имеет продолжительность, которая определяет, как долго должен продолжаться эффект. Продолжительность можно указать в виде числа миллисекунд или в виде строки. Строка «fast» означает 200 миллисекунд. Строка «slow» означает 600 миллисекунд. Если указать строку, которая не будет распознана библиотекой jQuery, по умолчанию будет использована продолжительность 400 миллисекунд. Имеется возможность определять новые названия, обозначающие продолжительность, добавляя новые отображения строк в числа в объект

jQuery.fx.speeds
:

Поделиться:
Популярные книги

Слезы Эйдена 1

Владимиров Денис
11. Глэрд
Фантастика:
боевая фантастика
фэнтези
попаданцы
5.00
рейтинг книги
Слезы Эйдена 1

Личный аптекарь императора. Том 2

Карелин Сергей Витальевич
2. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Личный аптекарь императора. Том 2

Цикл романов "Целитель". Компиляция. Книги 1-17

Большаков Валерий Петрович
Целитель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Цикл романов Целитель. Компиляция. Книги 1-17

Гром Раскатного. Том 3

Володин Григорий Григорьевич
3. Штормовой Предел
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Гром Раскатного. Том 3

Бастард Императора. Том 10

Орлов Андрей Юрьевич
10. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 10

Последний Паладин. Том 7

Саваровский Роман
7. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 7

Ученик. Книга вторая

Первухин Андрей Евгеньевич
2. Ученик
Фантастика:
фэнтези
5.40
рейтинг книги
Ученик. Книга вторая

Князь Андер Арес 5

Грехов Тимофей
5. Андер Арес
Фантастика:
историческое фэнтези
фэнтези
героическая фантастика
5.00
рейтинг книги
Князь Андер Арес 5

Последний Паладин. Том 12

Саваровский Роман
12. Путь Паладина
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Последний Паладин. Том 12

Гримуар темного лорда II

Грехов Тимофей
2. Гримуар темного лорда
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Гримуар темного лорда II

Вперед в прошлое 3

Ратманов Денис
3. Вперёд в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 3

Бояръ-Аниме. Газлайтер. Том 30

Володин Григорий Григорьевич
30. История Телепата
Фантастика:
альтернативная история
аниме
фэнтези
5.00
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 30

Я граф. Книга XII

Дрейк Сириус
12. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я граф. Книга XII

Наследник

Майерс Александр
3. Династия
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Наследник