Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Vanilla Javascript

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Vanilla Javascript

Small presentation i gave to my colleagues to convert them to use more native JavaScript instead of jQuery.

Avatar for Anthony Ringoet

Anthony Ringoet

May 30, 2013
Tweet

Other Decks in Programming

Transcript

  1. Vanilla Closer to the metal = faster. Modern browsers =

    possibility to dump some jQuery Alternatives … Zepto Ender custom built jQuery (2.0) the tiny min.js
  2. Get all by 'css selector' / / j q u

    e r y $ ( " a " ) ; / / n a t i v e d o c u m e n t . g e t E l e m e n t B y T a g N a m e ( " a " ) ;
  3. Get all class/id / / j q u e r

    y $ ( " . w h a t e v e r " ) ; / / n a t i v e d o c u m e n t . q u e r y S e l e c t o r A l l ( " . w h a t e v e r " ) ; d o c u m e n t . q u e r y S e l e c t o r ( " . w h a t e v e r " ) ; / / o n l y f i r s t r e s u l t / / f a s t e r f o r c l a s s e s d o c u m e n t . g e t E l e m e n t B y C l a s s N a m e ( " w h a t e v e r " ) ; / / f o r i d ' s d o c u m e n t . g e t E l e m e n t B y I d ( " s o m e - i d " ) ;
  4. Change CSS / / j q u e r y

    $ ( e l ) . c s s ( ' w i d t h ' , ' 5 0 p x ' ) ; / / n a t i v e e l . s t y l e . w i d t h = ' 5 0 p x ' ;
  5. Registering events / / j q u e r y

    e l e m e n t . b i n d ( ' c l i c k ' , f n ) ; / / o r d e l e g a t e d o c u m e n t . b o d y . o n ( ' c l i c k ' , ' . e l e m e n t S e l e c t i o n ' , f n ) ; / / n a t i v e / / s u p p o r t f r o m i e 9 a n d u p e l e m e n t . a d d E v e n t L i s t e n e r ( ' c l i c k ' , f n ) ; / / f o r o l d I E e l e m e n t . a t t a c h E v e n t ( ' o n c l i c k ' , f n ) ;
  6. Attributes No support issues whatsoever. / / j q u

    e r y $ ( e l e m e n t ) . a t t r ( ' v a l u e ' , ' f o o ' ) ; / / n a t i v e e l e m e n t . s e t A t t r i b u t e ( ' v a l u e ' , ' f o o ' ) ; e l e m e n t . i d ; e l e m e n t . h r e f ; …
  7. Classes (classList ftw!) but polyfill available for < IE10 support

    details / / j q u e r y e l e m . a d d C l a s s ( ' f o o ' ) ; e l e m . r e m o v e C l a s s ( ' f o o ' ) ; e l e m . h a s C l a s s ( ' f o o ' ) ; / / n a t i v e e l e m . c l a s s L i s t . a d d ( ' f o o ' ) ; e l e m . c l a s s L i s t . r e m o v e ( ' f o o ' ) ; e l e m . c l a s s L i s t . c o n t a i n s ( ' f o o ' ) ;
  8. Insert nodes A bit more complicated. Depends on what you

    need. / / j q u e r y $ ( e l e m e n t ) . a p p e n d ( h t m l ) ; / / n a t i v e e l e m e n t . i n n e r H T M L = h t m l ;
  9. Sources Weaning yourself off jquery To hell with jQuery Native

    equivalents of jQuery functions MDN JavaScript