jQuery метод .toggle()
jQuery эффектыОпределение и применение
jQuery метод .toggle() позволяет отобразить или скрыть выбранные элементы. Если элемент изначально отображается, то он будет скрыт, если элемент скрыт, то он будет отображен.
Значение CSS свойства display элемента сохраняются и восстанавливаются при необходимости. Например, если элемент имеет значение этого свойства inline, то при отображении элемента, после того как он был скрыт, значение свойства не изменится и будет по прежнему inline.
Обращаю Ваше внимание, что когда метод .toggle() используется без параметров, то элемент скрывается, или отображается без анимации. Когда метод используется с параметрами, то происходит анимация свойств width (ширина), height (высота) и opacity (прозрачность) у выбранных элементов. В момент достижения этих свойств нулевых значение (анимация исчезновения), CSS свойство display устанавливается в none. Метод .slideToggle() в отличии от .toggle() производит анимацию только высоты элемента.
jQuery синтаксис:
Синтаксис 1.0: $( selector ).toggle() // метод используется без параметров $( selector ).toggle( duration, complete ) duration - Number, или String complete - Function $( selector ).toggle( { options } ) // option: value (описание ниже) options - PlainObject Синтаксис 1.3: $( selector ).toggle( display ) display - Boolean Синтаксис 1.4.3: $( selector ).toggle( duration, easing, complete ) duration - Number, или String easing - String complete - Function
Добавлен в версии jQuery
1.0 (синтаксис обновлен в версии 1.4)Значения параметров
Параметр | Описание |
---|---|
display | Используйте true, чтобы отобразить элемент или false, чтобы скрыть его. Это эквивалентно использованию методов .show() и .hide() в зависимости от видимости элемента:
if ( display === true ) { $( "selector" ).show(); } else if ( display === false ) { $( "selector" ).hide(); } |
duration | Строковое или числовое значение, которое определяет, как долго анимация будет продолжаться. Значение по умолчанию 400 (в миллисекундах). Строковые ключевые слова 'fast' и 'slow' соответствуют 200 и 600 миллисекундам соответственно (высокие значения указывают на медленную анимацию, а более низкие на быструю). |
easing | Ключевое слово (строка), которое опряеделяет кривую скорости для анимации (используется математическая функция - кубическая кривая Безье). Без использования внешних плагинов имеет только два значения - linear (эффект анимации с одинаковой скоростью от начала до конца) и swing (эффект анимации имеет медленный старт и медленное окончание, но скорость увеличивается в середине анимации). Значение по умолчанию swing. |
complete | Функция, которая будет выполнена после завершения анимации, она вызывается один раз для каждого соответствующего элемента. Внутри функции, переменная this ссылается на DOM элемент к которому применяется анимация. |
options |
|
Пример использования
<!DOCTYPE html> <html> <head> <title>Использование jQuery методов .toggle() и .slideToggle() (без параметров)</title> <style></style> <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <script> $( document ).ready(function(){ $( ".toggle" ).click(function(){ // задаем функцию при нажатиии на элемент с классом toggle $( "div" ).toggle(); // скрываем, или отображаем все элементы <div> }); $( ".slide-toggle" ).click(function(){ // задаем функцию при нажатиии на элемент с классом slide-toggle $( "div" ).slideToggle(); // плавно скрываем, или отображаем все элементы <div> }); }); </script> </head> <body> <button class = "toggle">Метод .toggle()</button> <button class = "slide-toggle">Метод .slideToggle()</button> <hr> <div></div> <div></div> <div></div> </body> </html>
В этом примере с использованием jQuery метода .toggle() мы при нажатии на определенную кнопку скрываем, или отображаем выбранные элементы <div> в документе, а и с использованием метода .slideToggle() делаем аналогочиные действия, но при этом высота элемента изменяется плавно - скользящим движением (анимация изменения высоты).
Результат нашего примера:
Рассмотрим следующий пример в котором зададим методам .toggle() и .slideToggle() различные значения продолжительности анимации:
<!DOCTYPE html> <html> <head> <title>Использование jQuery методов .toggle() и .slideToggle() (различная скорость анимации)</title> <style></style> <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <script> $( document ).ready(function(){ $( ".toggle" ).click(function(){ // задаем функцию при нажатиии на элемент с классом toggle $( "div:first" ).toggle( "slow" ); // скрывыаем, или отображаем первый элемент <div> в документе $( "div:nth-of-type(2)" ).toggle( 1000 ); // скрывыаем, или отображаем второй элемент <div> в документе $( "div:last" ).toggle( "fast" ); // скрывыаем, или отображаем последний элемент <div> в документе }); $( ".slide-toggle" ).click(function(){ // задаем функцию при нажатиии на элемент с классом slide-toggle $( "div:first" ).slideToggle( "slow" ); // скрывыаем, или отображаем первый элемент <div> в документе $( "div:nth-of-type(2)" ).slideToggle( 1000 ); // скрывыаем, или отображаем второй элемент <div> в документе $( "div:last" ).slideToggle( "fast" ); // скрывыаем, или отображаем последний элемент <div> в документе }); }); </script> </head> <body> <button class = "toggle">Метод .toggle()</button> <button class = "slide-toggle">Метод .slideToggle()</button> <hr> <div></div> <div></div> <div></div> </body> </html>
В этом примере с использованием jQuery методов .toggle() и .slideToggle() мы при нажатии на определенную кнопку скрываем, либо отображаем все элементы <div> в документе. При этом первый элемент <div> скрывается, или отображается за 600 миллисекунд (ключевое слово 'slow'), второй элемент за 1000 миллисекунд, а третитй за 200 миллисекунд (ключевое слово 'fast'). Обратите внимание на разницу в анимации, метод .slideToggle() анимирует только высоту элемента, а метод .toggle() ширину, высоту и прозрачность.
Результат нашего примера:
Рассмотрим следующий пример в котором зададим методам .toggle() и .slideToggle() не только продолжительность анимации, но и укажем скорость анимации и функцию, которая будет выполнена после завершения анимации:
<!DOCTYPE html> <html> <head> <title>Использование jQuery методов .toggle() и .slideToggle() (с callback функцией)</title> <style></style> <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <script> $( document ).ready(function(){ $( ".toggle" ).click(function(){ // задаем функцию при нажатиии на элемент с классом toggle $( "div" ).slideUp( 500, "linear", function(){ // отображаем, или скрываем элементы <div> в документе console.log("toggle completed"); // выводим в консоль браузера информацию о завершении метода для каждого элемента в наборе }); }); $( ".slide-toggle" ).click(function(){ // задаем функцию при нажатиии на элемент с классом slide-toggle $( "div" ).slideDown( 500, "linear", function(){ // отображаем, или скрываем элементы <div> в документе console.log("slideToggle completed"); // выводим в консоль браузера информацию о завершении метода для каждого элемента в наборе }); }); }); </script> </head> <body> <button class = "toggle">Метод .toggle()</button> <button class = "slide-toggle">Метод .slideToggle()</button> <hr> <div></div> <div></div> <div></div> </body> </html>
В этом примере с использованием jQuery методов .toggle() и .slideToggle() мы при нажатии на определенную кнопку скрываем, либо отображаем все элементы <div> в документе. При этом мы указали для наших методов продолжительность анимации равную пол секунды (500 миллисекунд), эффект анимации происходит с одинаковой скоростью от начала до конца (linear) и функцию, которая после завершения анимации выводит в консоль браузера информацию о завершении выполнения метода для каждого элемента в наборе совпавших элементов.
Результат нашего примера:
Рассмотрим следующий пример в котором передадим в качестве параметра методов .toggle() и .slideToggle() объект, содержащий различные опции, которые будут контролировать анимацию:
<!DOCTYPE html> <html> <head> <title>Использование jQuery методов .toggle() и .slideToggle() (объект с опциями в качестве параметра)</title> <style></style> <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <script> $( document ).ready(function(){ $( ".toggle" ).click(function(){ // задаем функцию при нажатиии на элемент с классомtoggle $( "div" ).toggle( { // отображаем, или скрываем элементы <div> в документе duration: 800, // продолжительность анимации easing: "linear", // скорость анимации complete: function(){ // callback console.log("toggle completed"); }, queue: false // не ставим в очередь }); }); $( ".slide-toggle" ).click(function(){ // задаем функцию при нажатиии на элемент с классом slide-toggle $( "div" ).slideToggle( { // отображаем, или скрываем элементы <div> в документе duration: 800, // продолжительность анимации easing: "linear", // скорость анимации complete: function(){ // callback console.log("slideToggle completed"); }, queue: false // не ставим в очередь }); }); }); </script> </head> <body> <button class = "toggle">Метод .toggle()</button> <button class = "slide-toggle">Метод .slideToggle()</button> <hr> <div></div> <div></div> <div></div> </body> </html>
В этом примере с использованием jQuery методов .toggle() и .slideToggle() мы при нажатии на определенную кнопку скрываем, либо отображаем все элементы <div> в документе. При этом мы в качестве параметров методов передаем объект содержащий следующие параметры:
- продолжительность анимации равную 800 миллисекунд (duration: 800)
- эффект анимации происходит с одинаковой скоростью от начала до конца (easing: linear)
- функция, которая после завершения анимации выводит в консоль браузера информацию о завершении выполнения метода для каждого элемента в наборе совпавших элементов (complete: function).
- анимация не размещается в очереди эффектов (queue: false).
Результат нашего примера:
jQuery эффекты