Beginning jQuery part 2

24
Beginning jQuery (part 2) Review of the Code School course “Try jQuery” (parts 4–5)

description

Introduction to jQuery (for journalism students) and review of the Code School "Try jQuery" course, Parts 4-5. Revised in March 2014. New exercises available on GitHub: https://github.com/macloo/jquery_exercises

Transcript of Beginning jQuery part 2

Page 1: Beginning jQuery part 2

Beginning jQuery (part 2)

Review of the Code School course“Try jQuery” (parts 4–5)

Page 2: Beginning jQuery part 2

Review of Levels 4–5http://try.jquery.com/

Page 3: Beginning jQuery part 2

Simple Interactions

$('#pushie').click(function() {// some code here// more code

});

$('#apple').hover(function() {// some code here// more code

});

Page 4: Beginning jQuery part 2

“Event handlers” are different$('.confirmation').on('click', 'button', function() {

$(this).closest('.confirmation').find('.ticket').slideDown();});

An event handler always includes .on()In this example, .confirmation is a DIV or other container.Inside the container are one or more buttons.The handler “listens” for a click on any button inside any element with the class .confirmationWhen a click occurs, in this case jQuery travels “up” the DOM to find .confirmation and then “down” the DOM to find .ticket — then it reveals (shows) the .ticket element with a sliding motion.

Page 5: Beginning jQuery part 2

$('.confirmation').on('click', 'button', function() { // some code here

});

$('button').on('click', function() { // some code here

});

These two are different: The first one “listens” only to the .confirmation element(s).The second one listens to every button element on the whole page.(The second one is not efficient.)

Event Handlers (2)

Page 6: Beginning jQuery part 2

Event Handlers: Mouse Events

What are we “listening” for?

• click• dblclick• focusin• focusout• mousedown• mouseup

• mouseenter• mouseleave• mousemove• mouseout• mouseover

Page 7: Beginning jQuery part 2

Mouse Events

• There is no hover that can be used with .on() — there was, in an older version of jQuery, but not anymore.

• So, we use "mouseenter mouseleave" to achieve the same effect as hover.

• Note: Even though mouseover seems similar to mouseenter, and mouseout seems similar to mouseleave, do not use them.

Page 8: Beginning jQuery part 2

$("#states").on("mouseenter mouseleave",

We will do an exercise (later) that uses this.

Instead of hover

https://github.com/macloo/jquery_exercises

Page 9: Beginning jQuery part 2

More Event Handlers

Keyboard events

• keydown• keypress• keyup

Form events

• blur • change • focus • select • submit

Page 10: Beginning jQuery part 2

What about touch and swipe events?

Page 11: Beginning jQuery part 2

http://jquerymobile.com/

Page 12: Beginning jQuery part 2

http://jquerymobile.com/

Page 13: Beginning jQuery part 2

But back to our beginner lessons …

Page 14: Beginning jQuery part 2

Fading and Sliding!

.fadeIn()

.fadeOut()

.fadeToggle()

.slideIn()

.slideOut()

.slideToggle()

We’ll do two exercises with these, later.

hideslidefade.html

slideToggle.html

https://github.com/macloo/jquery_exercises

Page 15: Beginning jQuery part 2

Styling• Do not stick a lot of CSS styles into your jQuery functions:

$(this).css('background-color', '#252b30');$(this).css('border-color', '1px solid

#967');

• Instead, you should put CSS styles in your stylesheet (where they belong), and use them like this:

$(this).addClass('highlight');$(this).removeClass('highlight');

• You can also toggle styles:$(this).toggleClass('highlight');

Page 16: Beginning jQuery part 2

.animate()

$('#vacations').on('click', '.vacation', function() {$(this).toggleClass('highlighted'); $(this).animate( {'top': '-10px'} );

});

Here, jQuery will make the element with the class .vacation slide up (but not disappear) on the page, by 10 pixels, when it has been clicked.Note: The element needs to have position set to relative in the CSS, or this won’t work.

Page 17: Beginning jQuery part 2

$('#vacations').on('click', '.vacation', function() {$(this).toggleClass('highlighted');if($(this).hasClass('highlighted')) {

$(this).animate({'top': '-10px'});} else {

$(this).animate({'top': '0px'});}

});

Here we see an if statement inside the jQuery function. It plays off the .toggleClass() method, which adds/removes ‘highlighted’(from Code School lessons).

Reverse the animation

Page 18: Beginning jQuery part 2

Control the speed

$(this).animate( {'top': '-10px'}, 400 );$(this).animate( {'top': '-10px'}, 'fast' ); $(this).animate( {'top': '-10px'}, 200 );$(this).animate( {'top': '-10px'}, 'slow' ); $(this).animate( {'top': '-10px'}, 600 );

Page 19: Beginning jQuery part 2

Animate more than one thing

$(this).find('.per-night').animate( {'opacity': '1', 'top':'-14px' } );

Basically, you can animate anything that you can change or control with CSS.

Because—ahem!—CSS is doing the animation!

Page 20: Beginning jQuery part 2

However!

• Direct CSS transitions are faster than jQuery:http://stackoverflow.com/questions/10984771/whats-faster-css3-transitions-or-jquery-animations

• You have more control with jQuery (but it will

be slower overall). Less code with jQuery.• So you need to judge: CSS, or jQuery?

http://api.jquery.com/animate/ (Lots of examples here)

• CSS transitions – demos and more:http://css3.bradshawenterprises.com/transitions/

Page 21: Beginning jQuery part 2

jQuery vs. CSSMaybe you didn’t know about CSS3 transitions …

#apple {width: 100px;height: 100px;transition: width 2s, height 2s;/* Firefox */-moz-transition: width 2s, height 2s, -moz-transform

2s; /* Safari and Chrome */-webkit-transition: width 2s, height 2s, -webkit-

transform 2s; /* Opera */-o-transition: width 2s, height 2s, -o-transform 2s; }https://github.com/macloo/jquery_exercises

Page 22: Beginning jQuery part 2

CSS3 transitions need more code

transition: width 2s, height 2s;/* Firefox */

-moz-transition: width 2s, height 2s, -moz-transform 2s;

/* Safari and Chrome */-webkit-transition: width 2s, height 2s, -webkit-transform 2s;

/* Opera */-o-transition: width 2s, height 2s, -o-transform 2s;

Page 23: Beginning jQuery part 2

jQuery vs. CSS

Again, we’ll do two exercises to learn more about animation in the browser.

With jQuery:animate.html

Without jQuery:animation_with_css.html

https://github.com/macloo/jquery_exercises

Page 24: Beginning jQuery part 2

Beginning jQuery (part 2)

Review of the Code School course“Try jQuery” (parts 4–5)