SlideShare a Scribd company logo
1 of 14
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

What's hot

11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБДRoman Brovko
 
Написание DSL в Perl
Написание DSL в PerlНаписание DSL в Perl
Написание DSL в Perlmayperl
 
Caching on highload Drupal site - Alexander Shumenko
Caching on highload Drupal site - Alexander ShumenkoCaching on highload Drupal site - Alexander Shumenko
Caching on highload Drupal site - Alexander ShumenkoDrupalCampDN
 
Реализация шаблонов корпоративных приложений в Magento
Реализация шаблонов корпоративных приложений в MagentoРеализация шаблонов корпоративных приложений в Magento
Реализация шаблонов корпоративных приложений в MagentoMagecom Ukraine
 
Yii development
Yii developmentYii development
Yii developmentMageCloud
 
Making Scalable JavaScript Application
Making Scalable JavaScript ApplicationMaking Scalable JavaScript Application
Making Scalable JavaScript ApplicationMikhail Davydov
 
PHP basic
PHP basicPHP basic
PHP basicNoveo
 
Selenium: приемы работы
Selenium: приемы работыSelenium: приемы работы
Selenium: приемы работыPaul Stashevsky
 
DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6Dmitry Soshnikov
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Vasya Petrov
 
Cобачники против кинофобов
Cобачники против кинофобовCобачники против кинофобов
Cобачники против кинофобовLidiya Myalkina
 
Jquery selector optimization in drupal
Jquery selector optimization in drupalJquery selector optimization in drupal
Jquery selector optimization in drupalYury Glushkov
 
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...Moscow.pm
 
Алексей Плеханов: 25 причин попробовать Laravel
Алексей Плеханов: 25 причин попробовать LaravelАлексей Плеханов: 25 причин попробовать Laravel
Алексей Плеханов: 25 причин попробовать LaravelOleg Poludnenko
 
Web осень 2012 лекция 4
Web осень 2012 лекция 4Web осень 2012 лекция 4
Web осень 2012 лекция 4Technopark
 

What's hot (20)

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

Viewers also liked

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

Viewers also liked (6)

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

Similar to I tmozg js_school_jquery

Как программировать на JavaScript и не выстрелить себе в ногу
Как программировать на JavaScript и не выстрелить себе в ногуКак программировать на JavaScript и не выстрелить себе в ногу
Как программировать на JavaScript и не выстрелить себе в ногуAndreyGeonya
 
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15MoscowJS
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Vasya Petrov
 
Form api в drupal 7
Form api в drupal 7Form api в drupal 7
Form api в drupal 7dimateus
 
Take more from Jquery
Take more from JqueryTake more from Jquery
Take more from JqueryMagento Dev
 
Михаил Давыдов — JavaScript: Базовые знания
Михаил Давыдов — JavaScript: Базовые знанияМихаил Давыдов — JavaScript: Базовые знания
Михаил Давыдов — JavaScript: Базовые знанияYandex
 
Михаил Давыдов - JavaScript. Базовые знания
Михаил Давыдов - JavaScript. Базовые знанияМихаил Давыдов - JavaScript. Базовые знания
Михаил Давыдов - JavaScript. Базовые знанияYandex
 
Михаил Давыдов - Транспорт, ajax
Михаил Давыдов - Транспорт, ajaxМихаил Давыдов - Транспорт, ajax
Михаил Давыдов - Транспорт, ajaxYandex
 
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf Conference
 
Web весна 2012 лекция 9
Web весна 2012 лекция 9Web весна 2012 лекция 9
Web весна 2012 лекция 9Technopark
 
Опыт разработки эффективного SPA
Опыт разработки эффективного SPAОпыт разработки эффективного SPA
Опыт разработки эффективного SPAEugene Abrosimov
 
Михаил Давыдов - JavaScript. Асинхронность
Михаил Давыдов - JavaScript. АсинхронностьМихаил Давыдов - JavaScript. Асинхронность
Михаил Давыдов - JavaScript. АсинхронностьYandex
 
Михаил Давыдов — JavaScript: Асинхронность
Михаил Давыдов — JavaScript: АсинхронностьМихаил Давыдов — JavaScript: Асинхронность
Михаил Давыдов — JavaScript: АсинхронностьYandex
 
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScriptСтажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScriptSmartTools
 
Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2Paul Klimov
 

Similar to I tmozg js_school_jquery (20)

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

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