Пишемо jQuery плагін

12.03.2011
Пишемо jQuery плагін
Автор:

Якщо ви займаєтесь розробкою сайтів, то напевне вас зацікавить знання про те, як написати свій jQuery плагін. Зробити це досить просто. Прочитавши цю статтю ви зможете створювати свої плагіни.

Для того, щоб написати плагін потрібно оголосити jQuery.fn об'єкт, наприклад jQuery.fn.bestplugin, де bestplugin назва вашого плагіну. Це буде вигляди приблизно, так:

jQuery.fn. bestplugin = function() { 
// your code will be here
 };

Але, як видно тут замість звичного $("значка долара") стоїть jQuery, для того щоб використовувати $, потрібно убезпечити наш плагін від конфліктів з іншими JavaScript бібліотеками, оголосивши $ так:

(function( $ ){ 
 $.fn.bestplugin = function() {
   // your code will be here 
 }; 
})( jQuery );

Тепер можна приступати до самого цікавого - написання скрипта. Наведу приклад плагіна для простенького слайдшоу зображень:

(function($) {
  $.fn.bestplugin = function(options) { 
    var options = $.extend({      // Declaring settings by default that can be reset in plugin call
      timeOut: 2000,
      animateTime: 1000,
      opacity: 0.5
    },
    options);
    return $(this).each(function() { //return is used to continue a chain of calls of the given object
      var container = $(this),
      slides = $(this).children(),
      id,
      slidesLength = slides.length;
      container.css('position', 'relative');
      slides.each(function() {
        $(this).hide().css({
          'opacity': options.opacity,
          'position': 'absolute',
          'left': 0,
          'top': 0
        });
      });
      var Show = function() {
        id = id || 0;
        var currentSlide = slides.eq(id);
        console.log(currentSlide);
        currentSlide.show().animate({
          opacity: '1'
        },
        options.animateTime,
        function() {
          setTimeout(function() {
            currentSlide.animate({
              opacity: options.opacity
            },
            options.animateTime,
            function() {
              currentSlide.hide();
              id++;
              if (id == slidesLength) {
                id = 0
              };
              Show();
            });
          },
          options.timeOut);
        });
      }
      Show();
    });
  };
})(jQuery);

Розглянемо як це працює.

 var options = $.extend({      //Объявление настроек по умолчанию, которые можно переопределить в вызове плагина
      timeOut: 2000,
      animateTime: 1000,
      opacity: 0.5
    },
options);

Ця ділянка коду відповідає за визначення параметрів плагіна, задані тут налаштування будуть задіяні по замовчуванню, якщо вони не переприсвоєнні в функції виклику плагіна.

var container = $(this),
      slides = $(this).children(),
      id,
      slidesLength = slides.length;

Тут визначені змінні для визначення контейнера з зображеннями (container), той селектор до якого буде застосовуватися скрипт плагіна, самими зображеннями (slides), а також кількість слайдів (slidesLength) і глобальна змінна id.

var Show = function() {
        id = id || 0;
        var currentSlide = slides.eq(id);
        currentSlide.show().animate({
          opacity: '1'
        },
        options.animateTime,
        function() {
          setTimeout(function() {
            currentSlide.animate({
              opacity: options.opacity
            },
            options.animateTime,
            function() {
              currentSlide.hide();
              id++;
              if (id == slidesLength) {
                id = 0
              };
              Show();
            });
          },
          options.timeOut);
        });
      }

Тут описана сама функція показу слайдшоу, де застосовані змінні функції анімації при яких зображення буде пропадати і з'являтися. Після кожного показу картинки id збільшується на 1, для того, щоб здійснити перехід на показ наступного слайду. Також іде провірка: 

if (id == slidesLength) { id = 0 };

Якщо ми добралися до останнього слайду, то щоб не переривати показ, а почати знову з першого слайду, змінній id присвоюється значення 0.

Як видно функція Show викликає саму себе, для того щоб слайдшоу працювало. Потім в кінці самого плагіну викликаємо Show() для запуску роботи функції. На цьому код плагіну закінчений.

Вам знадобиться приблизно така HTML структура для роботи плагіну:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 
<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Slideshow</title>
    <script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
    <script type="text/javascript" src="js/jquery.bestplugin.js"></script>
    <script type="text/javascript" src="js/main.js"></script>
    <link type="text/css" href="style.css" rel="stylesheet" />
    </head>
 
    <body>
 
        <div id="wrap">
            <div id="img-container">
                <img src="img/image1.jpg" alt="" />
                <img src="img/image2.jpg" alt="" />
                <img src="img/image3.jpg" alt="" />
                <img src="img/image4.jpg" alt="" />
                <img src="img/image5.jpg" alt="" />
                <img src="img/image6.jpg" alt="" />
                <img src="img/image7.jpg" alt="" />
            </div>
        </div>
    </body>
</html>

Де в HEAD потрібно буде підключити бібліотеку jQuery, сам плагін і ваш CSS.

І щоб включити плагін в вашому файлі скрипта потрібно буде прописати наступне:

$(document).ready(function(){
$('#img-container').bestplugin({ // Reset plugin settings here if necessary
    opacity: 0.5,
    timeOut: 3000,
    animateTime: 500});  
});

На цьому, власне, і все, бажаю успіху у вивченні прекресного фреймворка jQuery.

Голосів: 1 Рейтинг: 5

Також по темі

1

В Drupal по замовчуванню поставлена перевірка пароля користувача при реєстрації. Для її усунення потрібно виконати наступне:

2
Дуже часто буває потрібно зробити сортування нод по якомусь критерію. Для цього часто використовують Views, Nodequeue, Flag та інші схожі модулі. Але часто буває так, що функціоналу цих модулів...
3
Pressflow - дистрибутив Drupal, який забезпечує покращену продуктивність і маштабування. Він розроблений хлопцями з Four Kitchens
4

Напевно всі стикались з готовими збірками сайтів на Drupal, коли після встановлення отримуєш готовий сайт з набором необхідних модулів, своєю темою і т.д. Існує велика кількість таких збірок,...

5

Профілювання - це процес аналізу роботи додатку для збору інформації про продуктивність (збір набору характеристик - час, використання оперативної пам'яті і ресурсів процесора, кількість викликів...

Subscribe to our blog updates