SlideShare a Scribd company logo
1




    jQuery плагины
2
    jQuery плагины
    • Экономят время


    • Упрощают код скриптов


    • Позволяют другим использовать ваш код
3
    Инициализация

    jQuery.fn.myPlugin = function() {

     // Код крутого плагина

    };
4
    Правильная инициализация

    (function( $ ) {
     $.fn.myPlugin = function() {

      // Код крутого плагина

     };
    })( jQuery )
5
    Контекст
    (function( $ ){

     $.fn.myPlugin = function() {
       // "this" уже является jQuery объектом
       this.fadeIn('normal', function() {
           // "this“ является DOM объектом
       });
     };
    })( jQuery );

    $('#element').myPlugin();
6
    Работающий плагин
    (function( $ ){

     $.fn.maxHeight = function() {

      var max = 0;

      this.each(function() {
       max = Math.max( max, $(this).height() );
      });

       return max;
     };
    })( jQuery );


    var tallest = $('div').maxHeight();
7
    Поддерживаем chaining
    (function( $ ){

     $.fn.lockDimensions = function( type ) {

      return this.each(function() {
       var $this = $(this);
       // Работаем с каждым элементом
      });

     };
    })( jQuery );
8
    Параметризация
    (function( $ ){
     $.fn.tooltip = function( options ) {

      // Массив значений по умолчанию
      var settings = $.extend( {
        'location'           : 'top',
        'background-color‘ : 'blue'
      }, options);

      return this.each(function() {
       // Код плагина
      });

     };
    })( jQuery );

    $('div').tooltip({ 'location' : 'left' });
9
    Namespacing
    (function( $ ){

     $.fn.tooltip = function( options ) {
       // Это
     };
     $.fn.tooltipShow = function( ) {
       // очень
     };
     $.fn.tooltipHide = function( ) {
       // плохо
     };
     $.fn.tooltipUpdate = function( content ) {
       // !!!
     };

    })( jQuery );
10
     Список методов
      var methods = {
         init : function( options ) { },
         show : function( ) { },
         hide : function( ) { },
         update : function( content ) { }
       };
11
     Логика выбора нужного метода
     $.fn.tooltip = function( method ) {
        if ( methods[method] ) {
          return methods[ method ].apply( this,
     Array.prototype.slice.call( arguments, 1 ));
        } else if ( typeof method === 'object' || ! method ) {
          return methods.init.apply( this, arguments );
        } else {
          $.error( 'Method ' + method + ' does not exist on
     jQuery.tooltip' );
        }
      };
12
     Вызов метода
     // Вызываем init метод
     $('div').tooltip();

     // Вызываем init метод с параметрами
     $('div').tooltip({ foo : 'bar' });

     // Вызываем hide метод
     $('div').tooltip('hide');

     // Вызываем update метод с параметром
     $('div').tooltip('update', 'This is the new tooltip content!');
13
     Итоги

     • (function( $ ){ /* код плагина */ })( jQuery );
     • Поддерживайте chaining
     • Передавайте настройки через {}
     • Всегда используйте namespace
     • Один namespace – один плагин
14



                      Вопросы?



        Павлючков
         Даниил
     d.pavluchkov@itmozg.ru

More Related Content

PDF
13 - Web-технологии. Отображение данных
PDF
12 - Web-технологии. Django модели
PPTX
PHP Advanced
PDF
10 - Web-технологии. MVC фреймворки (продолжение)
PPTX
I tmozg js_school
PPTX
Yii 2. Что нового?
PDF
YiiConf 2012 - Alexander Makarov - Yii2, что нового
PPT
Yserver
13 - Web-технологии. Отображение данных
12 - Web-технологии. Django модели
PHP Advanced
10 - Web-технологии. MVC фреймворки (продолжение)
I tmozg js_school
Yii 2. Что нового?
YiiConf 2012 - Alexander Makarov - Yii2, что нового
Yserver

What's hot (20)

PDF
11 - Web-технологии. Работа с СУБД
PDF
Написание DSL в Perl
PPTX
Caching on highload Drupal site - Alexander Shumenko
ODP
Server optimization
PPTX
Реализация шаблонов корпоративных приложений в Magento
PDF
Decorators' recipes
PPT
Yii development
PDF
Making Scalable JavaScript Application
PDF
Erlang tasty & useful stuff
PPTX
PHP basic
PDF
Perl: Symbol table
PPTX
Selenium: приемы работы
PDF
DevConf. Дмитрий Сошников - ECMAScript 6
PPT
Подробная презентация JavaScript 6 в 1
PDF
Cобачники против кинофобов
PPT
Jquery selector optimization in drupal
PPTX
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
PDF
Perl – жив?!
PDF
Алексей Плеханов: 25 причин попробовать Laravel
PPT
Web осень 2012 лекция 4
11 - Web-технологии. Работа с СУБД
Написание DSL в Perl
Caching on highload Drupal site - Alexander Shumenko
Server optimization
Реализация шаблонов корпоративных приложений в Magento
Decorators' recipes
Yii development
Making Scalable JavaScript Application
Erlang tasty & useful stuff
PHP basic
Perl: Symbol table
Selenium: приемы работы
DevConf. Дмитрий Сошников - ECMAScript 6
Подробная презентация JavaScript 6 в 1
Cобачники против кинофобов
Jquery selector optimization in drupal
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
Perl – жив?!
Алексей Плеханов: 25 причин попробовать Laravel
Web осень 2012 лекция 4
Ad

Viewers also liked (6)

PDF
Олег Мохов: Веб-компоненты
PPT
Oxxigeno - Llega la web comercialmente inteligente
PDF
Rolling shutter slats roll forming machine
PPT
поиск работы в It. как правильно себя продавать i_tmozg_bb_2013
PPTX
ITmozg_Kumpel_Kariera_v_IT
PPT
기조발제 황상민 다양성이 경쟁력이다 인쇄용
Олег Мохов: Веб-компоненты
Oxxigeno - Llega la web comercialmente inteligente
Rolling shutter slats roll forming machine
поиск работы в It. как правильно себя продавать i_tmozg_bb_2013
ITmozg_Kumpel_Kariera_v_IT
기조발제 황상민 다양성이 경쟁력이다 인쇄용
Ad

Similar to I tmozg js_school_jquery (20)

PDF
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
PPT
Подробная презентация JavaScript 6 в 1
PPT
Form api в drupal 7
PPTX
Render API.
PPT
Take more from Jquery
PDF
Михаил Давыдов — JavaScript: Базовые знания
PDF
Михаил Давыдов - JavaScript. Базовые знания
PDF
Михаил Давыдов - Транспорт, ajax
PPT
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
PPTX
Unit тестирование
PPT
Web весна 2012 лекция 9
PDF
Опыт разработки эффективного SPA
PDF
Laravel 4 fwdays
PDF
Михаил Давыдов - JavaScript. Асинхронность
PDF
Асинхронный JavaScript
PDF
Михаил Давыдов — JavaScript: Асинхронность
PDF
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
PDF
Примеры решения типичных задач за рамками ядра Yii2
PPTX
JavaScript как объектно-ориентированный язык программирования
PPTX
course js day 4
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
Подробная презентация JavaScript 6 в 1
Form api в drupal 7
Render API.
Take more from Jquery
Михаил Давыдов — JavaScript: Базовые знания
Михаил Давыдов - JavaScript. Базовые знания
Михаил Давыдов - Транспорт, ajax
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
Unit тестирование
Web весна 2012 лекция 9
Опыт разработки эффективного SPA
Laravel 4 fwdays
Михаил Давыдов - JavaScript. Асинхронность
Асинхронный JavaScript
Михаил Давыдов — JavaScript: Асинхронность
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Примеры решения типичных задач за рамками ядра Yii2
JavaScript как объектно-ориентированный язык программирования
course js day 4

I tmozg js_school_jquery

  • 1. 1 jQuery плагины
  • 2. 2 jQuery плагины • Экономят время • Упрощают код скриптов • Позволяют другим использовать ваш код
  • 3. 3 Инициализация jQuery.fn.myPlugin = function() { // Код крутого плагина };
  • 4. 4 Правильная инициализация (function( $ ) { $.fn.myPlugin = function() { // Код крутого плагина }; })( jQuery )
  • 5. 5 Контекст (function( $ ){ $.fn.myPlugin = function() { // "this" уже является jQuery объектом this.fadeIn('normal', function() { // "this“ является DOM объектом }); }; })( jQuery ); $('#element').myPlugin();
  • 6. 6 Работающий плагин (function( $ ){ $.fn.maxHeight = function() { var max = 0; this.each(function() { max = Math.max( max, $(this).height() ); }); return max; }; })( jQuery ); var tallest = $('div').maxHeight();
  • 7. 7 Поддерживаем chaining (function( $ ){ $.fn.lockDimensions = function( type ) { return this.each(function() { var $this = $(this); // Работаем с каждым элементом }); }; })( jQuery );
  • 8. 8 Параметризация (function( $ ){ $.fn.tooltip = function( options ) { // Массив значений по умолчанию var settings = $.extend( { 'location' : 'top', 'background-color‘ : 'blue' }, options); return this.each(function() { // Код плагина }); }; })( jQuery ); $('div').tooltip({ 'location' : 'left' });
  • 9. 9 Namespacing (function( $ ){ $.fn.tooltip = function( options ) { // Это }; $.fn.tooltipShow = function( ) { // очень }; $.fn.tooltipHide = function( ) { // плохо }; $.fn.tooltipUpdate = function( content ) { // !!! }; })( jQuery );
  • 10. 10 Список методов var methods = { init : function( options ) { }, show : function( ) { }, hide : function( ) { }, update : function( content ) { } };
  • 11. 11 Логика выбора нужного метода $.fn.tooltip = function( method ) { if ( methods[method] ) { return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 )); } else if ( typeof method === 'object' || ! method ) { return methods.init.apply( this, arguments ); } else { $.error( 'Method ' + method + ' does not exist on jQuery.tooltip' ); } };
  • 12. 12 Вызов метода // Вызываем init метод $('div').tooltip(); // Вызываем init метод с параметрами $('div').tooltip({ foo : 'bar' }); // Вызываем hide метод $('div').tooltip('hide'); // Вызываем update метод с параметром $('div').tooltip('update', 'This is the new tooltip content!');
  • 13. 13 Итоги • (function( $ ){ /* код плагина */ })( jQuery ); • Поддерживайте chaining • Передавайте настройки через {} • Всегда используйте namespace • Один namespace – один плагин
  • 14. 14 Вопросы? Павлючков Даниил d.pavluchkov@itmozg.ru