SlideShare uma empresa Scribd logo
1 de 92
Baixar para ler offline
ШРИ: jQuery


Алексей Бережной
разработчик интерфейсов
jQuery 1.0 – 2006 год




3
Спустя 6 лет и ~44 версий




4
5   clck.ru/2WaK4
6
Для чего нужен jQuery




    •  Работа с DOM
    •  AJAX
    •  События




7
Работа с DOM


    $(‘.b-page .b-block’).eq(2).addClass(‘b-block_mode_blue’);!
    !
    !
    $(‘.b-block’).find(‘.b-block2’).hide();!
    !
    !
    $(‘.b-text-block’).text(‘hello world!’).css(‘color’, ‘red’);!
    !
    !
    $(‘.b-block’).add(‘.b-block2’).html(‘<b>Bold</b>’);!
    !
    !




8
Работа с DOM



    $('<h1/>', {!
        style: 'text-align: center',!
        html: $('<span/>', {!
            style: 'color: red',!
            html: 'Я' })})!
    .append(' в ШРИ')!
    .prependTo('body');!




9
AJAX
     $.ajax({!
      !type: 'POST',!
      !dataType: 'json',!
      !url: '/registered/main.pl',!
      !data: {!
      ! !name: ’Aleksey Berezhnoy’,!
      ! !company: ’Yandex’,!
      ! !position: ’UI developer’!
      !},!
      !success: function(data){!
      ! !console.log(’request success’);!
      !},!
      !error: function(e){!
      ! !console.log(’Outch!’);!
      !}!
     }!




10
События
     $(‘.b-alert-button’).click(function(){!
       !alert(‘button pressed’);!
     });!
     !
     !
     $(window).resize(function(){!
       !console.log($(this).width(), $(this).height());!
     });!
     !
     !
     $(‘*’).hover(showHideBeautifulTooltip);!
     !
     !
     $(‘.b-input’).on(‘blur change’, validateInputValue);!




11
jQuery API




                  api.jquery.com	

12                jqapi.ru
13
Селекторы

     •  Базовые
     •  Иерархия
     •  Базовые фильтры
     •  Фильтры по содержимому
     •  Фильтры видимости
     •  Фильтры потомков
     •  Фильтры атрибутов
     •  Фильтры элементов формы
14
Базовые



     •  #id
     •  element
     •  .class, .class.class
     •  *
     •  selector1, selector2



15
Иерархия




     •  ancestor descendant
     •  parent > child
     •  prev + next
     •  prev ~ siblings



16
Базовые фильтры


                         •  :eq(index)
     •  :first
                         •  :gt(index)
     •  :last
                         •  :lt(index)
     •  :not(selector)
                         •  :header
     •  :even
                         •  :animated
     •  :odd
                         •  :focus


17
Фильтры по содержимому



     •  :contains(text)
     •  :empty
     •  :has(selector)
     •  :parent




18
Фильтры видимости




     •  :hidden
     •  :visible




19
Фильтры потомков




     •  :nth-child(expr)
     •  :first-child
     •  :last-child
     •  :only-child



20
Фильтры атрибутов

     •  [attribute]
     •  [attribute=value]
     •  [attribute!=value]
     •  [attribute^=value]
     •  [attribute$=value]
     •  [attribute*=value]
     •  [attribute|=value]
     •  [attribute~=value]
     •  [attribute][attribute2]
21
Фильтры элементов формы
     •  :input
     •  :text
     •  :password
     •  :radio
     •  :checkbox
     •  :submit
     •  :image
     •  :reset
     •  :button
22
     •  :file
Фильтры состояний элементов формы




     •  :enabled
     •  :disabled
     •  :checked
     •  :selected



23
Не нужно писать сложные
     селекторы!



24
Ядро




     •  jQuery( selector [ , context ] )
     •  jQuery( html )
     •  jQuery( callback )




25
Ядро




26
jQuery( selector [ , context ] )


      $(‘div.foo’);!
      !
      $(‘div.foo’, this); // ~ $(this).find(‘div.foo’)!
      !




27
jQuery( html )


      $('<p class=”b-block">My <em>new</em> text</p>')!
       !.appendTo('body');!




28
jQuery( callback )


      $(function(){!
       !// Document is ready!
      });!




29
AJAX




     •  Низкоуровневый интерфейс
     •  Сокращения
     •  Глобальные обработчики ajax события
     •  Сериализация



30
Низкоуровневый интерфейс




     •  jQuery.ajax( url, [settings] )
     •  jQuery.ajaxSetup( settings )




31
jQuery.ajax( url, [settings] )


      $.ajax({!
       !url: 'ajax/test.html',!
       !success: function(data) {!
       ! !alert('Load was performed.');!
       !}!
      });!




32
Сокращения



     •  $.load
     •  $.get
     •  $.getJSON
     •  $.getScript
     •  $.post



33
Глобальные обработчики ajax
      события

     •  $.ajaxComplete
     •  $.ajaxError
     •  $.ajaxSend
     •  $.ajaxStart
     •  $.ajaxStop
     •  $.ajaxSuccess


34
Сериализация
     <form>!
       !<input type=“text” name=“name” value=“Aleksey”/>!
       !<input type=“text” name=“surname” value=“Berezhnoy”/>!
       !<input type=“text” name=“position” value=“UI developer”/>!
       !<input type=“hidden” name=“key” value=“42”/>!
     </form>!
     !
     !
     {!
       !name: 'Aleksey',!
       !surname: 'Berezhnoy',!
       !position: 'UI developer',!
       !key: 42!
     }!
     !
     !
     "name=Aleksey&surname=Berezhnoy&position=UI+developer&key=42"!



35
Сериализация




     •  $.serialize
     •  $.serializeArray
     •  $.param




36
События



     •  Загрузка страницы
     •  Обработка событий
     •  Сокращения
     •  Объект события
     •  jQuery special events



37
Загрузка страницы




     $(document).ready(function(){ /* ... */ });!
     !
     $(function(){ /* ... */ });!




38
Обработка событий


     •  $.bind / $.unbind
     •  $.one
     •  $.trigger
     •  $.triggerHandler
     •  $.live / $.die
     •  $.delegate / $.undelegate
     •  $.on / $.off

39
Сокращения



                    •  $.focus
     •  $.blur
                    •  $.focusin
     •  $.change
                    •  $.focusout
     •  $.click
                    •  $.keydown
     •  $.dbclick
                    •  $.keypress
     •  $.error
                    •  $.keyup


40
Сокращения


                   •  $.mousedown
     •  $.load
                   •  $.mouseup
     •  $.unload
                   •  $.mouseenter
     •  $.resize
                   •  $.mouseleave
     •  $.scroll
                   •  $.mousemove
     •  $.select
                   •  $.mouseout
     •  $.submit
                   •  $.mouseover

41
Объект события
     Нормализирует:
     •  target
     •  relatedTarget
     •  pageX
     •  pageY
     •  which
     •  metaKey


      var e = $.Event(‘keydown’, { keyCode: 64 });!
        !
      $(‘body’).trigger( e );!




42
jQuery special events


     Домашнее задание:

     Напишите плагин для jQuery, позволяющий
     добавить обработчик события на DOM-
     элемент, срабатывающий на:
     •  нажатие только левой кнопки мыши
     •  тройное нажатие

43
Эффекты



     •  Базовые
     •  Скольжение (Sliding)
     •  Исчезновение (Fading)
     •  Произвольные анимации
     •  Настройки



44
Базовые




     •  $.show
     •  $.hide
     •  $.toggle




45
Скольжение (Sliding)




     •  $.slideDown
     •  $.slideUp
     •  $.slideToggle




46
Исчезновение (Fading)




     •  $.fadeIn
     •  $.fadeOut
     •  $.fadeTo
     •  $.fadeToggle



47
Произвольные анимации




     •  $.animate
     •  $.stop
     •  $.delay




48
Настройки




     •  $.fx.off
     •  $.fx.interval




49
Атрибуты




     •  Атрибуты
     •  Класс
     •  HTML, текст
     •  Значение



50
Атрибуты




     •  $.attr
     •  $.removeAttr
     •  $.prop
     •  $.removeProp



51
$.attr vs $.prop
      <input type=“checkbox” checked=“checked” />!


                                                             true	
  (Boolean)	
  Изменится	
  с	
  состоянием	
  
     elem.checked	
  
                                                             чекбокса 	
  	
  

                                                             true	
  (Boolean)	
  Изменится	
  с	
  состоянием	
  
     $(elem).prop("checked")	
  
                                                             чекбокса 	
  	
  
                                                             "checked"	
  (String)	
  Начальное	
  состояние	
  
     elem.getA8ribute("checked")	
  
                                                             чекбокса,	
  не	
  меняется	
  
     $(elem).a8r("checked")	
  (1.6)	
  
                                   	
                        "checked"	
  (String)	
  Начальное	
  состояние	
  
     	
                                                      чекбокса,	
  не	
  меняется 	
  	
  

     $(elem).a8r("checked")	
  (1.6.1+)	
  	
                "checked"	
  (String)	
  Изменится	
  с	
  состоянием	
  
     	
                                                      чекбокса	
  

     $(elem).a8r("checked")	
  (pre-­‐1.6)        	
  	
     true	
  (Boolean)	
  Изменится	
  с	
  состоянием	
  
     	
                                                      чекбокса	
  

52
                                                                                              clck.ru/2j90t
Класс




     •  $.addClass
     •  $.hasClass
     •  $.removeClass
     •  $.toggleClass



53
HTML, текст




     •  $.html
     •  $.text




54
Значение




     •  $.val




55
CSS




     •  CSS
     •  Позиционирование
     •  Высота и ширина




56
CSS




     •  $.css




57
Позиционирование



     •  $.offset
     •  $.offsetParent
     •  $.position
     •  $.scrollTop
     •  $.scrollLeft



58
Высота и ширина



     •  $.height
     •  $.width
     •  $.innerHeight
     •  $.innerWidth
     •  $.outerHeight
     •  $.outerWidth


59
Перемещение по выборке




     •  Фильтрование
     •  Перемещение по дереву
     •  Прочее




60
Фильтрование

     •  $.eq
     •  $.first
     •  $.last
     •  $.has
     •  $.filter
     •  $.is
     •  $.map
     •  $.not
     •  $.slice
61
Перемещение по дереву

                        •  $.offsetParent
     •  $.children      •  $.parent
     •  $.closest       •  $.parents
     •  $.find          •  $.parentsUntil
     •  $.next          •  $.prev
     •  $.nextAll       •  $.prevAll
     •  $.nextUntil     •  $.prevUntil
                        •  $.siblings
62
Прочее




     •  $.add
     •  $.andSelf
     •  $.contents
     •  $.end



63
Манипуляции



     •  Вставка внутрь
     •  Вставка снаружи
     •  Оборачивание
     •  Замена
     •  Удаление
     •  Копирование


64
Вставка внутрь




     •  $.append
     •  $.appendTo
     •  $.prepend
     •  $.prependTo



65
Вставка снаружи




     •  $.after
     •  $.before
     •  $.insertAfter
     •  $.insertBefore



66
Оборачивание




     •  $.unwrap
     •  $.wrap
     •  $.wrapAll
     •  $.wrapInner



67
Замена




     •  $.replaceWith
     •  $.replaceAll




68
Удаление




     •  $.detach
     •  $.empty
     •  $.remove




69
Копирование




     •  $.clone




70
Deffered

     •  def.always
                                     •  def.progress
     •  def.done
                                     •  def.reject
     •  def.fail
                                     •  def.rejectWith
     •  def.isRejected
                                     •  def.resolve
     •  def.isResolved
                                     •  defresolveWith
     •  def.notify
                                     •  def.state
     •  def.notifyWith
                                     •  def.then
     •  def.pipe
                       •  def.promise
71
Callbacks
     •  cb.add(callbacks)
     •  cb.disable()
     •  cb.empty()
     •  cb.fire(arguments)
     •  cb.fired()
     •  cb.fireWith([context] [, args])   •  $.Callbacks
     •  cb.has(callback)
     •  cb.lock()
     •  cb.locked()
72
     •  cb.remove(callbacks)
Callbacks
     function fn1( value ){!
         console.log( value );!
     }!
     !
     function fn2( value ){!
         fn1("fn2 says:" + value);!
         return false;!
     }!
     !
     var callbacks = $.Callbacks();!
     !
     callbacks.add( fn1 );!
     callbacks.fire( "foo!" ); // foo!!
     !
     callbacks.add( fn2 );!
     callbacks.fire( "bar!" ); // bar!, fn2 says: bar!!




73
Утилиты




     •  Определение браузера и возможностей
     •  Базовые операции
     •  Функции для работы с data
     •  Операции проверки



74
Определение браузера
      и возможностей



     •  $.support
     •  $.browser
     •  $.browser.version
     •  $.boxModel



75
Базовые операции



     •  $.each           •  $.merge
     •  $.extend         •  $.noop
     •  $.grep           •  $.proxy
     •  $.makeArray      •  $.unique
     •  $.map            •  $.trim
     •  $.inArray        •  $.parseJSON


76
Функции для работы с data



     •  $.queue
     •  $.clearQueue
     •  $.dequeue
     •  $.data
     •  $.removeData



77
Операции проверки


     •  $.type
     •  $.isArray
     •  $.isEmptyObject
     •  $.isFunction
     •  $.isPlainObject
     •  $.isWindow
     •  $.isNumeric

78
Рекомендации




79
Рекомендации




     •  Chainability
     •  Кеширование
     •  Использование API
     •  Плагины



80
Chainability


      $(‘.b-block’).html(‘<span class=“b-block__inner”></span>’);!
      !
      $(‘.b-block’).find(‘.b-block__inner’).css(‘color’, ‘blue’);!
      !
      $(‘.b-block’).find(‘.b-block__inner’).text(‘hello’);!
      !
      $(‘.b-block’).css(‘background’, ‘green’);!
      !
      $(‘.b-block’).click(function(){!
        !console.log(‘b-block clicked’);!
      });!




81
Chainability


      $(‘.b-block’).html(‘<span class=“b-block__inner”></span>’);!
      !
      $(‘.b-block’).find(‘.b-block__inner’).css(‘color’, ‘blue’);!
      !
      $(‘.b-block’).find(‘.b-block__inner’).text(‘hello’);!
      !
      $(‘.b-block’).css(‘background’, ‘green’);!
      !
      $(‘.b-block’).click(function(){!
        !console.log(‘b-block clicked’);!
      });!




82
Chainability


      $(‘.b-block’)!
       !.html(‘<span class=“b-block__inner”></span>’)!
       !.find(‘.b-block__inner’)!
       ! !.css(‘color’, ‘blue’)!
       ! !.text(‘hello’)!
       ! !.end() // а вот и end!
       !.css(‘background’, ‘green’)!
       !.click(function(){!
       ! !console.log(‘b-block clicked’);!
       !});!




83
Кеширование


     $(‘b-action’)!
       !.mouseenter(function(){!
       ! !$(‘b-signal’).addClass(‘b-signal_mode_mouseenter’);!
       !})!
       !.mouseleave(function(){!
       ! !$(‘b-signal’).addClass(‘b-signal_mode_mouseleave’);!
       !})!
       !.click(function(){!
       ! !$(‘b-signal’).addClass(‘b-signal_mode_click’);!
       !});!
     !
     !
     !
     !
     !

84
Кеширование


     $(‘b-action’)!
       !.mouseenter(function(){!
       ! !$(‘b-signal’).addClass(‘b-signal_mode_mouseenter’);!
       !})!
       !.mouseleave(function(){!
       ! !$(‘b-signal’).addClass(‘b-signal_mode_mouseleave’);!
       !})!
       !.click(function(){!
       ! !$(‘b-signal’).addClass(‘b-signal_mode_click’);!
       !});!
     !
     !
     !
     !
     !

85
Кеширование

     var bSignal = $(‘b-signal’);!
     !
     $(‘b-action’)!
       !.mouseenter(function(){!
       ! !bSignal.addClass(‘b-signal_mode_mouseenter’);!
       !})!
       !.mouseleave(function(){!
       ! !bSignal.addClass(‘b-signal_mode_mouseleave’);!
       !})!
       !.click(function(){!
       ! !bSignal.addClass(‘b-signal_mode_click’);!
       !});!
     !
     !
     !
     !
     !
86
Использование API

     !
     document.onclick = function(e) {!
       !...!
     };!
     !
     $(function() {!
       !...!
     });!
     !
     !
     $(document).ready(function() {!
       !var promoItem = document.getElementById(‘promo-item’);!
       !!
       !...!
     !
     });!


87
Использование API

     $(‘.jsbanner’).each(function() {!
       !var externalScript = document.createElement(‘script’);!
     !
       !externalScript.type = ‘text/javascript’;!
     !
       !externalScript.onreadystatechange = function () {!
       ! !if (this.readyState == 'loaded’) {!
       ! ! !onLoadScript.apply(this);!
       ! !}!
       !}!
     !
       !externalScript.onload = onLoadScript;!
     !
       !var path = this.getAttribute('path');!
       !if(path) {!
       ! !externalScript.src = path;!
       ! !this.appendChild(externalScript);!
       !}!
     });!
88
Плагины




89
Инструменты




     FireQuery – must have




90
FireQuery




91
Бережной Алексей

     разработчик интерфейсов




     collapsus@yandex-team.ru




Спасибо!

Mais conteúdo relacionado

Mais procurados

YiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что новогоYiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что новогоAlexander Makarov
 
Написание DSL в Perl
Написание DSL в PerlНаписание DSL в Perl
Написание DSL в Perlmayperl
 
DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2Alexander Makarov
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4Technopark
 
использование Hibernate java persistence.part 2.
использование Hibernate java persistence.part 2.использование Hibernate java persistence.part 2.
использование Hibernate java persistence.part 2.Asya Dudnik
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiAlexander Makarov
 
Профилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаПрофилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаprivate_face
 
Rambler.iOS #8: Как не стать жертвой бэкендеров
Rambler.iOS #8: Как не стать жертвой бэкендеровRambler.iOS #8: Как не стать жертвой бэкендеров
Rambler.iOS #8: Как не стать жертвой бэкендеровRAMBLER&Co
 
13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данных13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данныхRoman Brovko
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Ontico
 
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаprivate_face
 
Meet Magento Belarus debug Pavel Novitsky (rus)
Meet Magento Belarus debug Pavel Novitsky (rus)Meet Magento Belarus debug Pavel Novitsky (rus)
Meet Magento Belarus debug Pavel Novitsky (rus)Pavel Novitsky
 
Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Paul Klimov
 
Jquery selector optimization in drupal
Jquery selector optimization in drupalJquery selector optimization in drupal
Jquery selector optimization in drupalYury Glushkov
 
YiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииYiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииPaul Klimov
 
Интуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные ViewsИнтуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные ViewsГлеб Тарасов
 
Пластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать житьПластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать житьMoscow.pm
 

Mais procurados (20)

YiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что новогоYiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что нового
 
Perl: Symbol table
Perl: Symbol tablePerl: Symbol table
Perl: Symbol table
 
Написание DSL в Perl
Написание DSL в PerlНаписание DSL в Perl
Написание DSL в Perl
 
DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4
 
использование Hibernate java persistence.part 2.
использование Hibernate java persistence.part 2.использование Hibernate java persistence.part 2.
использование Hibernate java persistence.part 2.
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем Yii
 
Профилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаПрофилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кода
 
Rambler.iOS #8: Как не стать жертвой бэкендеров
Rambler.iOS #8: Как не стать жертвой бэкендеровRambler.iOS #8: Как не стать жертвой бэкендеров
Rambler.iOS #8: Как не стать жертвой бэкендеров
 
13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данных13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данных
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
 
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кода
 
Jquery
JqueryJquery
Jquery
 
Perl 5.10 и 5.12
Perl 5.10 и 5.12Perl 5.10 и 5.12
Perl 5.10 и 5.12
 
Meet Magento Belarus debug Pavel Novitsky (rus)
Meet Magento Belarus debug Pavel Novitsky (rus)Meet Magento Belarus debug Pavel Novitsky (rus)
Meet Magento Belarus debug Pavel Novitsky (rus)
 
Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2
 
Jquery selector optimization in drupal
Jquery selector optimization in drupalJquery selector optimization in drupal
Jquery selector optimization in drupal
 
YiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииYiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляции
 
Интуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные ViewsИнтуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные Views
 
Пластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать житьПластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать жить
 

Destaque

Александр Коваленко "Оценка черной магии"
Александр Коваленко "Оценка черной магии"Александр Коваленко "Оценка черной магии"
Александр Коваленко "Оценка черной магии"Yandex
 
Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"Yandex
 
Дмитрий Качмар "Поток вертикальных сервиcов"
Дмитрий Качмар "Поток вертикальных сервиcов"Дмитрий Качмар "Поток вертикальных сервиcов"
Дмитрий Качмар "Поток вертикальных сервиcов"Yandex
 
Екатерина Войденко "Горизонтальное масштабирование MySQL"
Екатерина Войденко "Горизонтальное масштабирование MySQL"Екатерина Войденко "Горизонтальное масштабирование MySQL"
Екатерина Войденко "Горизонтальное масштабирование MySQL"Yandex
 
Дмитрий Качмар, Вадим Цесько "Жизнь одного проекта: от идеи до воплощения"
Дмитрий Качмар, Вадим Цесько "Жизнь одного проекта: от идеи до воплощения"Дмитрий Качмар, Вадим Цесько "Жизнь одного проекта: от идеи до воплощения"
Дмитрий Качмар, Вадим Цесько "Жизнь одного проекта: от идеи до воплощения"Yandex
 
Иван Бибилов "Нагрузки в спорте высоких достижений"
Иван Бибилов "Нагрузки в спорте высоких достижений"Иван Бибилов "Нагрузки в спорте высоких достижений"
Иван Бибилов "Нагрузки в спорте высоких достижений"Yandex
 
Николай Яремко "Роль HTML-вёрстки в проектировании интерфейсов Яндекс.Почты"
Николай Яремко "Роль HTML-вёрстки в проектировании интерфейсов Яндекс.Почты"Николай Яремко "Роль HTML-вёрстки в проектировании интерфейсов Яндекс.Почты"
Николай Яремко "Роль HTML-вёрстки в проектировании интерфейсов Яндекс.Почты"Yandex
 
Сергей Пузанков — Шаблонизаторы
Сергей Пузанков — ШаблонизаторыСергей Пузанков — Шаблонизаторы
Сергей Пузанков — ШаблонизаторыYandex
 
Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"
Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"
Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"Yandex
 
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"Yandex
 
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"Yandex
 
Вадим Пацев "Прототипирование на живом проекте"
Вадим Пацев "Прототипирование на живом проекте"Вадим Пацев "Прототипирование на живом проекте"
Вадим Пацев "Прототипирование на живом проекте"Yandex
 
Виталий Харисов - Система ведения задач
Виталий Харисов - Система ведения задачВиталий Харисов - Система ведения задач
Виталий Харисов - Система ведения задачYandex
 
Дмитрий Вульбрун "Поиск для сайта: зачем он нужен, как с ним работать, как и ...
Дмитрий Вульбрун "Поиск для сайта: зачем он нужен, как с ним работать, как и ...Дмитрий Вульбрун "Поиск для сайта: зачем он нужен, как с ним работать, как и ...
Дмитрий Вульбрун "Поиск для сайта: зачем он нужен, как с ним работать, как и ...Yandex
 
"The Virtual Network over TRILL: Private VLANs in open-source". Thomas Stocki...
"The Virtual Network over TRILL: Private VLANs in open-source". Thomas Stocki..."The Virtual Network over TRILL: Private VLANs in open-source". Thomas Stocki...
"The Virtual Network over TRILL: Private VLANs in open-source". Thomas Stocki...Yandex
 
Дмитрий Щадей "Зачем и как мы используем jsLint"
Дмитрий Щадей "Зачем и как мы используем jsLint"Дмитрий Щадей "Зачем и как мы используем jsLint"
Дмитрий Щадей "Зачем и как мы используем jsLint"Yandex
 
Conselhos apaixonados
Conselhos apaixonadosConselhos apaixonados
Conselhos apaixonadosMaivo falcão
 

Destaque (20)

Александр Коваленко "Оценка черной магии"
Александр Коваленко "Оценка черной магии"Александр Коваленко "Оценка черной магии"
Александр Коваленко "Оценка черной магии"
 
Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"
 
Дмитрий Качмар "Поток вертикальных сервиcов"
Дмитрий Качмар "Поток вертикальных сервиcов"Дмитрий Качмар "Поток вертикальных сервиcов"
Дмитрий Качмар "Поток вертикальных сервиcов"
 
Екатерина Войденко "Горизонтальное масштабирование MySQL"
Екатерина Войденко "Горизонтальное масштабирование MySQL"Екатерина Войденко "Горизонтальное масштабирование MySQL"
Екатерина Войденко "Горизонтальное масштабирование MySQL"
 
Дмитрий Качмар, Вадим Цесько "Жизнь одного проекта: от идеи до воплощения"
Дмитрий Качмар, Вадим Цесько "Жизнь одного проекта: от идеи до воплощения"Дмитрий Качмар, Вадим Цесько "Жизнь одного проекта: от идеи до воплощения"
Дмитрий Качмар, Вадим Цесько "Жизнь одного проекта: от идеи до воплощения"
 
Иван Бибилов "Нагрузки в спорте высоких достижений"
Иван Бибилов "Нагрузки в спорте высоких достижений"Иван Бибилов "Нагрузки в спорте высоких достижений"
Иван Бибилов "Нагрузки в спорте высоких достижений"
 
Николай Яремко "Роль HTML-вёрстки в проектировании интерфейсов Яндекс.Почты"
Николай Яремко "Роль HTML-вёрстки в проектировании интерфейсов Яндекс.Почты"Николай Яремко "Роль HTML-вёрстки в проектировании интерфейсов Яндекс.Почты"
Николай Яремко "Роль HTML-вёрстки в проектировании интерфейсов Яндекс.Почты"
 
Сергей Пузанков — Шаблонизаторы
Сергей Пузанков — ШаблонизаторыСергей Пузанков — Шаблонизаторы
Сергей Пузанков — Шаблонизаторы
 
Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"
Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"
Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"
 
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
 
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
 
Вадим Пацев "Прототипирование на живом проекте"
Вадим Пацев "Прототипирование на живом проекте"Вадим Пацев "Прототипирование на живом проекте"
Вадим Пацев "Прототипирование на живом проекте"
 
Виталий Харисов - Система ведения задач
Виталий Харисов - Система ведения задачВиталий Харисов - Система ведения задач
Виталий Харисов - Система ведения задач
 
Дмитрий Вульбрун "Поиск для сайта: зачем он нужен, как с ним работать, как и ...
Дмитрий Вульбрун "Поиск для сайта: зачем он нужен, как с ним работать, как и ...Дмитрий Вульбрун "Поиск для сайта: зачем он нужен, как с ним работать, как и ...
Дмитрий Вульбрун "Поиск для сайта: зачем он нужен, как с ним работать, как и ...
 
"The Virtual Network over TRILL: Private VLANs in open-source". Thomas Stocki...
"The Virtual Network over TRILL: Private VLANs in open-source". Thomas Stocki..."The Virtual Network over TRILL: Private VLANs in open-source". Thomas Stocki...
"The Virtual Network over TRILL: Private VLANs in open-source". Thomas Stocki...
 
Дмитрий Щадей "Зачем и как мы используем jsLint"
Дмитрий Щадей "Зачем и как мы используем jsLint"Дмитрий Щадей "Зачем и как мы используем jsLint"
Дмитрий Щадей "Зачем и как мы используем jsLint"
 
Diodos
DiodosDiodos
Diodos
 
Nova Lei Penal 2
Nova Lei Penal 2Nova Lei Penal 2
Nova Lei Penal 2
 
Conselhos apaixonados
Conselhos apaixonadosConselhos apaixonados
Conselhos apaixonados
 
R.i diapositivas, dhtic
R.i diapositivas, dhticR.i diapositivas, dhtic
R.i diapositivas, dhtic
 

Semelhante a Алексей Бережной — «jQuery»

I tmozg js_school
I tmozg js_schoolI tmozg js_school
I tmozg js_schoolITmozg
 
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"Yandex
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.Igor Shkulipa
 
Автоматизация разработки курсов: путь от рутины к игре
Автоматизация разработки курсов: путь от рутины к игреАвтоматизация разработки курсов: путь от рутины к игре
Автоматизация разработки курсов: путь от рутины к игреAlexey Simonenko
 
PHP Tricks
PHP TricksPHP Tricks
PHP TricksBlackFan
 
Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101Anton Arhipov
 
Web internship java script
Web internship   java scriptWeb internship   java script
Web internship java scriptNoveo
 
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким ХалиловWebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким ХалиловGeeksLab Odessa
 
Регрессионное тестирование верстки
Регрессионное тестирование версткиРегрессионное тестирование верстки
Регрессионное тестирование версткиTalks&Works
 
Mihail Korepanov
Mihail KorepanovMihail Korepanov
Mihail Korepanovyaevents
 
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...Yandex
 
Codeception UATestingDays
Codeception UATestingDaysCodeception UATestingDays
Codeception UATestingDaysdavertmik
 
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в DjangoMoscowDjango
 
2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb SpockBohdan Danyliuk
 
Александр Кашеверов - Коротко про WEB
Александр Кашеверов - Коротко про WEBАлександр Кашеверов - Коротко про WEB
Александр Кашеверов - Коротко про WEBDataArt
 
automation is iOS development
automation is iOS developmentautomation is iOS development
automation is iOS developmentIvan Trifonov
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 

Semelhante a Алексей Бережной — «jQuery» (20)

I tmozg js_school
I tmozg js_schoolI tmozg js_school
I tmozg js_school
 
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"
Сергей Бережной "Клиентский JavaScript в БЭМ-терминах: от блока до библиотеки"
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.
 
2014-11-01 03 Николай Линкер. Open your clojure
2014-11-01 03 Николай Линкер. Open your clojure2014-11-01 03 Николай Линкер. Open your clojure
2014-11-01 03 Николай Линкер. Open your clojure
 
Автоматизация разработки курсов: путь от рутины к игре
Автоматизация разработки курсов: путь от рутины к игреАвтоматизация разработки курсов: путь от рутины к игре
Автоматизация разработки курсов: путь от рутины к игре
 
PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
 
Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101
 
Kotlin на практике
Kotlin на практикеKotlin на практике
Kotlin на практике
 
Web internship java script
Web internship   java scriptWeb internship   java script
Web internship java script
 
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким ХалиловWebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
 
Регрессионное тестирование верстки
Регрессионное тестирование версткиРегрессионное тестирование верстки
Регрессионное тестирование верстки
 
Mihail Korepanov
Mihail KorepanovMihail Korepanov
Mihail Korepanov
 
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
 
Codeception UATestingDays
Codeception UATestingDaysCodeception UATestingDays
Codeception UATestingDays
 
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в Django
 
Codeception Introduction
Codeception IntroductionCodeception Introduction
Codeception Introduction
 
2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock
 
Александр Кашеверов - Коротко про WEB
Александр Кашеверов - Коротко про WEBАлександр Кашеверов - Коротко про WEB
Александр Кашеверов - Коротко про WEB
 
automation is iOS development
automation is iOS developmentautomation is iOS development
automation is iOS development
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 

Mais de Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 

Mais de Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

Алексей Бережной — «jQuery»

  • 1.
  • 3. jQuery 1.0 – 2006 год 3
  • 4. Спустя 6 лет и ~44 версий 4
  • 5. 5 clck.ru/2WaK4
  • 6. 6
  • 7. Для чего нужен jQuery •  Работа с DOM •  AJAX •  События 7
  • 8. Работа с DOM $(‘.b-page .b-block’).eq(2).addClass(‘b-block_mode_blue’);! ! ! $(‘.b-block’).find(‘.b-block2’).hide();! ! ! $(‘.b-text-block’).text(‘hello world!’).css(‘color’, ‘red’);! ! ! $(‘.b-block’).add(‘.b-block2’).html(‘<b>Bold</b>’);! ! ! 8
  • 9. Работа с DOM $('<h1/>', {! style: 'text-align: center',! html: $('<span/>', {! style: 'color: red',! html: 'Я' })})! .append(' в ШРИ')! .prependTo('body');! 9
  • 10. AJAX $.ajax({! !type: 'POST',! !dataType: 'json',! !url: '/registered/main.pl',! !data: {! ! !name: ’Aleksey Berezhnoy’,! ! !company: ’Yandex’,! ! !position: ’UI developer’! !},! !success: function(data){! ! !console.log(’request success’);! !},! !error: function(e){! ! !console.log(’Outch!’);! !}! }! 10
  • 11. События $(‘.b-alert-button’).click(function(){! !alert(‘button pressed’);! });! ! ! $(window).resize(function(){! !console.log($(this).width(), $(this).height());! });! ! ! $(‘*’).hover(showHideBeautifulTooltip);! ! ! $(‘.b-input’).on(‘blur change’, validateInputValue);! 11
  • 12. jQuery API api.jquery.com 12 jqapi.ru
  • 13. 13
  • 14. Селекторы •  Базовые •  Иерархия •  Базовые фильтры •  Фильтры по содержимому •  Фильтры видимости •  Фильтры потомков •  Фильтры атрибутов •  Фильтры элементов формы 14
  • 15. Базовые •  #id •  element •  .class, .class.class •  * •  selector1, selector2 15
  • 16. Иерархия •  ancestor descendant •  parent > child •  prev + next •  prev ~ siblings 16
  • 17. Базовые фильтры •  :eq(index) •  :first •  :gt(index) •  :last •  :lt(index) •  :not(selector) •  :header •  :even •  :animated •  :odd •  :focus 17
  • 18. Фильтры по содержимому •  :contains(text) •  :empty •  :has(selector) •  :parent 18
  • 19. Фильтры видимости •  :hidden •  :visible 19
  • 20. Фильтры потомков •  :nth-child(expr) •  :first-child •  :last-child •  :only-child 20
  • 21. Фильтры атрибутов •  [attribute] •  [attribute=value] •  [attribute!=value] •  [attribute^=value] •  [attribute$=value] •  [attribute*=value] •  [attribute|=value] •  [attribute~=value] •  [attribute][attribute2] 21
  • 22. Фильтры элементов формы •  :input •  :text •  :password •  :radio •  :checkbox •  :submit •  :image •  :reset •  :button 22 •  :file
  • 23. Фильтры состояний элементов формы •  :enabled •  :disabled •  :checked •  :selected 23
  • 24. Не нужно писать сложные селекторы! 24
  • 25. Ядро •  jQuery( selector [ , context ] ) •  jQuery( html ) •  jQuery( callback ) 25
  • 27. jQuery( selector [ , context ] ) $(‘div.foo’);! ! $(‘div.foo’, this); // ~ $(this).find(‘div.foo’)! ! 27
  • 28. jQuery( html ) $('<p class=”b-block">My <em>new</em> text</p>')! !.appendTo('body');! 28
  • 29. jQuery( callback ) $(function(){! !// Document is ready! });! 29
  • 30. AJAX •  Низкоуровневый интерфейс •  Сокращения •  Глобальные обработчики ajax события •  Сериализация 30
  • 31. Низкоуровневый интерфейс •  jQuery.ajax( url, [settings] ) •  jQuery.ajaxSetup( settings ) 31
  • 32. jQuery.ajax( url, [settings] ) $.ajax({! !url: 'ajax/test.html',! !success: function(data) {! ! !alert('Load was performed.');! !}! });! 32
  • 33. Сокращения •  $.load •  $.get •  $.getJSON •  $.getScript •  $.post 33
  • 34. Глобальные обработчики ajax события •  $.ajaxComplete •  $.ajaxError •  $.ajaxSend •  $.ajaxStart •  $.ajaxStop •  $.ajaxSuccess 34
  • 35. Сериализация <form>! !<input type=“text” name=“name” value=“Aleksey”/>! !<input type=“text” name=“surname” value=“Berezhnoy”/>! !<input type=“text” name=“position” value=“UI developer”/>! !<input type=“hidden” name=“key” value=“42”/>! </form>! ! ! {! !name: 'Aleksey',! !surname: 'Berezhnoy',! !position: 'UI developer',! !key: 42! }! ! ! "name=Aleksey&surname=Berezhnoy&position=UI+developer&key=42"! 35
  • 36. Сериализация •  $.serialize •  $.serializeArray •  $.param 36
  • 37. События •  Загрузка страницы •  Обработка событий •  Сокращения •  Объект события •  jQuery special events 37
  • 38. Загрузка страницы $(document).ready(function(){ /* ... */ });! ! $(function(){ /* ... */ });! 38
  • 39. Обработка событий •  $.bind / $.unbind •  $.one •  $.trigger •  $.triggerHandler •  $.live / $.die •  $.delegate / $.undelegate •  $.on / $.off 39
  • 40. Сокращения •  $.focus •  $.blur •  $.focusin •  $.change •  $.focusout •  $.click •  $.keydown •  $.dbclick •  $.keypress •  $.error •  $.keyup 40
  • 41. Сокращения •  $.mousedown •  $.load •  $.mouseup •  $.unload •  $.mouseenter •  $.resize •  $.mouseleave •  $.scroll •  $.mousemove •  $.select •  $.mouseout •  $.submit •  $.mouseover 41
  • 42. Объект события Нормализирует: •  target •  relatedTarget •  pageX •  pageY •  which •  metaKey var e = $.Event(‘keydown’, { keyCode: 64 });! ! $(‘body’).trigger( e );! 42
  • 43. jQuery special events Домашнее задание: Напишите плагин для jQuery, позволяющий добавить обработчик события на DOM- элемент, срабатывающий на: •  нажатие только левой кнопки мыши •  тройное нажатие 43
  • 44. Эффекты •  Базовые •  Скольжение (Sliding) •  Исчезновение (Fading) •  Произвольные анимации •  Настройки 44
  • 45. Базовые •  $.show •  $.hide •  $.toggle 45
  • 46. Скольжение (Sliding) •  $.slideDown •  $.slideUp •  $.slideToggle 46
  • 47. Исчезновение (Fading) •  $.fadeIn •  $.fadeOut •  $.fadeTo •  $.fadeToggle 47
  • 48. Произвольные анимации •  $.animate •  $.stop •  $.delay 48
  • 49. Настройки •  $.fx.off •  $.fx.interval 49
  • 50. Атрибуты •  Атрибуты •  Класс •  HTML, текст •  Значение 50
  • 51. Атрибуты •  $.attr •  $.removeAttr •  $.prop •  $.removeProp 51
  • 52. $.attr vs $.prop <input type=“checkbox” checked=“checked” />! true  (Boolean)  Изменится  с  состоянием   elem.checked   чекбокса     true  (Boolean)  Изменится  с  состоянием   $(elem).prop("checked")   чекбокса     "checked"  (String)  Начальное  состояние   elem.getA8ribute("checked")   чекбокса,  не  меняется   $(elem).a8r("checked")  (1.6)     "checked"  (String)  Начальное  состояние     чекбокса,  не  меняется     $(elem).a8r("checked")  (1.6.1+)     "checked"  (String)  Изменится  с  состоянием     чекбокса   $(elem).a8r("checked")  (pre-­‐1.6)     true  (Boolean)  Изменится  с  состоянием     чекбокса   52 clck.ru/2j90t
  • 53. Класс •  $.addClass •  $.hasClass •  $.removeClass •  $.toggleClass 53
  • 54. HTML, текст •  $.html •  $.text 54
  • 55. Значение •  $.val 55
  • 56. CSS •  CSS •  Позиционирование •  Высота и ширина 56
  • 57. CSS •  $.css 57
  • 58. Позиционирование •  $.offset •  $.offsetParent •  $.position •  $.scrollTop •  $.scrollLeft 58
  • 59. Высота и ширина •  $.height •  $.width •  $.innerHeight •  $.innerWidth •  $.outerHeight •  $.outerWidth 59
  • 60. Перемещение по выборке •  Фильтрование •  Перемещение по дереву •  Прочее 60
  • 61. Фильтрование •  $.eq •  $.first •  $.last •  $.has •  $.filter •  $.is •  $.map •  $.not •  $.slice 61
  • 62. Перемещение по дереву •  $.offsetParent •  $.children •  $.parent •  $.closest •  $.parents •  $.find •  $.parentsUntil •  $.next •  $.prev •  $.nextAll •  $.prevAll •  $.nextUntil •  $.prevUntil •  $.siblings 62
  • 63. Прочее •  $.add •  $.andSelf •  $.contents •  $.end 63
  • 64. Манипуляции •  Вставка внутрь •  Вставка снаружи •  Оборачивание •  Замена •  Удаление •  Копирование 64
  • 65. Вставка внутрь •  $.append •  $.appendTo •  $.prepend •  $.prependTo 65
  • 66. Вставка снаружи •  $.after •  $.before •  $.insertAfter •  $.insertBefore 66
  • 67. Оборачивание •  $.unwrap •  $.wrap •  $.wrapAll •  $.wrapInner 67
  • 68. Замена •  $.replaceWith •  $.replaceAll 68
  • 69. Удаление •  $.detach •  $.empty •  $.remove 69
  • 70. Копирование •  $.clone 70
  • 71. Deffered •  def.always •  def.progress •  def.done •  def.reject •  def.fail •  def.rejectWith •  def.isRejected •  def.resolve •  def.isResolved •  defresolveWith •  def.notify •  def.state •  def.notifyWith •  def.then •  def.pipe •  def.promise 71
  • 72. Callbacks •  cb.add(callbacks) •  cb.disable() •  cb.empty() •  cb.fire(arguments) •  cb.fired() •  cb.fireWith([context] [, args]) •  $.Callbacks •  cb.has(callback) •  cb.lock() •  cb.locked() 72 •  cb.remove(callbacks)
  • 73. Callbacks function fn1( value ){! console.log( value );! }! ! function fn2( value ){! fn1("fn2 says:" + value);! return false;! }! ! var callbacks = $.Callbacks();! ! callbacks.add( fn1 );! callbacks.fire( "foo!" ); // foo!! ! callbacks.add( fn2 );! callbacks.fire( "bar!" ); // bar!, fn2 says: bar!! 73
  • 74. Утилиты •  Определение браузера и возможностей •  Базовые операции •  Функции для работы с data •  Операции проверки 74
  • 75. Определение браузера и возможностей •  $.support •  $.browser •  $.browser.version •  $.boxModel 75
  • 76. Базовые операции •  $.each •  $.merge •  $.extend •  $.noop •  $.grep •  $.proxy •  $.makeArray •  $.unique •  $.map •  $.trim •  $.inArray •  $.parseJSON 76
  • 77. Функции для работы с data •  $.queue •  $.clearQueue •  $.dequeue •  $.data •  $.removeData 77
  • 78. Операции проверки •  $.type •  $.isArray •  $.isEmptyObject •  $.isFunction •  $.isPlainObject •  $.isWindow •  $.isNumeric 78
  • 80. Рекомендации •  Chainability •  Кеширование •  Использование API •  Плагины 80
  • 81. Chainability $(‘.b-block’).html(‘<span class=“b-block__inner”></span>’);! ! $(‘.b-block’).find(‘.b-block__inner’).css(‘color’, ‘blue’);! ! $(‘.b-block’).find(‘.b-block__inner’).text(‘hello’);! ! $(‘.b-block’).css(‘background’, ‘green’);! ! $(‘.b-block’).click(function(){! !console.log(‘b-block clicked’);! });! 81
  • 82. Chainability $(‘.b-block’).html(‘<span class=“b-block__inner”></span>’);! ! $(‘.b-block’).find(‘.b-block__inner’).css(‘color’, ‘blue’);! ! $(‘.b-block’).find(‘.b-block__inner’).text(‘hello’);! ! $(‘.b-block’).css(‘background’, ‘green’);! ! $(‘.b-block’).click(function(){! !console.log(‘b-block clicked’);! });! 82
  • 83. Chainability $(‘.b-block’)! !.html(‘<span class=“b-block__inner”></span>’)! !.find(‘.b-block__inner’)! ! !.css(‘color’, ‘blue’)! ! !.text(‘hello’)! ! !.end() // а вот и end! !.css(‘background’, ‘green’)! !.click(function(){! ! !console.log(‘b-block clicked’);! !});! 83
  • 84. Кеширование $(‘b-action’)! !.mouseenter(function(){! ! !$(‘b-signal’).addClass(‘b-signal_mode_mouseenter’);! !})! !.mouseleave(function(){! ! !$(‘b-signal’).addClass(‘b-signal_mode_mouseleave’);! !})! !.click(function(){! ! !$(‘b-signal’).addClass(‘b-signal_mode_click’);! !});! ! ! ! ! ! 84
  • 85. Кеширование $(‘b-action’)! !.mouseenter(function(){! ! !$(‘b-signal’).addClass(‘b-signal_mode_mouseenter’);! !})! !.mouseleave(function(){! ! !$(‘b-signal’).addClass(‘b-signal_mode_mouseleave’);! !})! !.click(function(){! ! !$(‘b-signal’).addClass(‘b-signal_mode_click’);! !});! ! ! ! ! ! 85
  • 86. Кеширование var bSignal = $(‘b-signal’);! ! $(‘b-action’)! !.mouseenter(function(){! ! !bSignal.addClass(‘b-signal_mode_mouseenter’);! !})! !.mouseleave(function(){! ! !bSignal.addClass(‘b-signal_mode_mouseleave’);! !})! !.click(function(){! ! !bSignal.addClass(‘b-signal_mode_click’);! !});! ! ! ! ! ! 86
  • 87. Использование API ! document.onclick = function(e) {! !...! };! ! $(function() {! !...! });! ! ! $(document).ready(function() {! !var promoItem = document.getElementById(‘promo-item’);! !! !...! ! });! 87
  • 88. Использование API $(‘.jsbanner’).each(function() {! !var externalScript = document.createElement(‘script’);! ! !externalScript.type = ‘text/javascript’;! ! !externalScript.onreadystatechange = function () {! ! !if (this.readyState == 'loaded’) {! ! ! !onLoadScript.apply(this);! ! !}! !}! ! !externalScript.onload = onLoadScript;! ! !var path = this.getAttribute('path');! !if(path) {! ! !externalScript.src = path;! ! !this.appendChild(externalScript);! !}! });! 88
  • 90. Инструменты FireQuery – must have 90
  • 92. Бережной Алексей разработчик интерфейсов collapsus@yandex-team.ru Спасибо!