+ All Categories
Home > Technology > international PHP2011_Bastian Feder_jQuery's Secrets

international PHP2011_Bastian Feder_jQuery's Secrets

Date post: 05-Dec-2014
Category:
Upload: smuellersandsmedia
View: 912 times
Download: 3 times
Share this document with a friend
Description:
 
28
Bastian Feder | Liip Ag jQuery secrets
Transcript
Page 1: international PHP2011_Bastian Feder_jQuery's Secrets

Bastian Feder | Liip Ag

jQuery secrets

Page 2: international PHP2011_Bastian Feder_jQuery's Secrets

jQuery secrets

Bastian [email protected]

IPC Spring 2011 Berlin31th May 2011

Page 3: international PHP2011_Bastian Feder_jQuery's Secrets

Me, myself & I

JavaScript since 2002

PHP since 2001

Opensource addict

PHP manual translations

FluentDOM

Page 4: international PHP2011_Bastian Feder_jQuery's Secrets

Utilities

Page 5: international PHP2011_Bastian Feder_jQuery's Secrets

Saving the state

jQuery.data(element, key[, value])

Store any kind of information on a DOM element

Circular references avoided

Low level function use $().data() instead.

Page 6: international PHP2011_Bastian Feder_jQuery's Secrets

Saving possible?

jQuery.acceptData( element )

Low level function invoked by $(elem).data()

Extend jQuery.noData to set additional constraints

Does not raise an error/exception

Page 7: international PHP2011_Bastian Feder_jQuery's Secrets

Removing the state

jQuery.removeData(element[, key])

Low level function use $().removeData([key])instead.

Removes all data if no key is passed.

Page 8: international PHP2011_Bastian Feder_jQuery's Secrets

State example

var logo = $('#jq-siteLogo');

$(document).data('logo', logo);

$(logo).detach();

$('fieldset[class="toc"]') .before($(document).data('logo'));

$(document).removeData('logo');

Page 9: international PHP2011_Bastian Feder_jQuery's Secrets

Extending for the good

jQuery.extend([deep], target[, object1][, objectN])

var defaults = { validate: false, limit: {max: 5, min: 1}, name: "foo"};var options = { validate: true, limit: {max:10}};var settings = $.extend(true, {}, defaults, options);

Page 10: international PHP2011_Bastian Feder_jQuery's Secrets

Extending for the good (II)

(function($, jQuery, undefined) {

jQuery.fn.myPlugin = function( options ) { var options = $.extend( {}, jQuery.fn.myPlugin.defaults, Options ); // put plugin code here // }

jQuery.fn.myPlugin.defaults = { 'color': '#fff', 'myPublicMethod': function(){} };

})(jQuery, jQuery);

Page 11: international PHP2011_Bastian Feder_jQuery's Secrets

jQuery.props[]

Register of translations

Used by .attr()

jQuery.props = {"for" : "htmlFor","class" : "className","frameborder" : "frameBorder",

…};

jQuery.props['uiwDiv'] = 'ui-jeopardysection-gameboard-header';

Page 12: international PHP2011_Bastian Feder_jQuery's Secrets

AJAX

Page 13: international PHP2011_Bastian Feder_jQuery's Secrets

Global AJAX settings

$.ajaxSetup({ url: "/xmlhttp/", username: "paul", passwort: "secret"

}); $.ajax({ data: myData });

jQuery.ajaxSetup( options )

Page 14: international PHP2011_Bastian Feder_jQuery's Secrets

Global AJAX settings (II)

Methods to set properties defined by $.ajax()

Examples:

$.ajaxSuccess()

$.ajaxError()

$.ajaxStart()

Page 15: international PHP2011_Bastian Feder_jQuery's Secrets

Shortcuts

.load(url,[data,] [complete(responseText, textStatus, XHR)])

$('#ticker').load('http://liip.ch#entry1790');

Page 16: international PHP2011_Bastian Feder_jQuery's Secrets

Promises & Deferreds

Proposed by CommonJS

Since jQuery 1.5

var a1 = $.ajax('page1');var a2 = $.ajax('page2');

$.when(a1, a2).then( function() { alert('Called when request successful!'), function() { alert('Called, when request failed.')}

Page 17: international PHP2011_Bastian Feder_jQuery's Secrets

Events

Page 18: international PHP2011_Bastian Feder_jQuery's Secrets

Event binding

.bind(type[, data], handler(event))

'type' might also be an object

$('.clickable').bind({ 'click': function(event) { //callback }, 'mousedown': function(event) { //callback }});

Page 19: international PHP2011_Bastian Feder_jQuery's Secrets

Namespaces

$('.clickable').bind('click.namespace', function(e){});

$('.clickable').bind({ 'click.namespace': function(event) { //callback }, 'mousedown.namespace': function(event) { //callback }});

$('.clickable').unbind('.namespace');

Page 20: international PHP2011_Bastian Feder_jQuery's Secrets

„global“ Events

ajaxStart

ajaxStop

$('#indicator') .bind({ 'ajaxStart.ajaxindicator': function() { // show tumble image }, 'ajaxStop.ajaxindicator': function() { // hide tumble image }});

Page 21: international PHP2011_Bastian Feder_jQuery's Secrets

Selfdefined speeding

$.extend(jQuery.fx.speeds, { slow: 600, fast: 200, // Default speed _default: 400},{ slowmotion: 100,});

$('#clickme').click(function() { $('#book').fadeIn('slowmotion');});

Page 22: international PHP2011_Bastian Feder_jQuery's Secrets

Extending jQuery

Page 23: international PHP2011_Bastian Feder_jQuery's Secrets

jQuery plugins

jQuery.error = function( msg, code ) { var error = []; error[msg] = message; error['code'] = $errorcode; if (typeof console != undefined) { console.error(error) } throw msg; }

jQuery.error( msg )

Page 24: international PHP2011_Bastian Feder_jQuery's Secrets

jQuery UI

$.extend('ui.autosuggest.prototype, { _search: function( value ) { // always save the actual value, // not the one passed as an argument this.term = this.element .addClass( "ui-autocomplete-loading" .val(); this.source( { term: value }, this.response );});

Page 25: international PHP2011_Bastian Feder_jQuery's Secrets

Sizzle.selectors

$.extend( $.expr.filters, { "myPseudoSelector": function( node, index, match ) { // return true, if s.th. Was selected // return false, if not. } });

jQuery.expr.filters

jQuery.expr[':']

Page 26: international PHP2011_Bastian Feder_jQuery's Secrets

Book recommendation

Jakob Westhoffhttp://westhoffswelt.de

ISBN: 978-3-86802-052-6

E-Book-ISBN: 978-3-86802-237-7

Page 27: international PHP2011_Bastian Feder_jQuery's Secrets

Feedback, pls

Joind.inhttp://joind.in/talk/view/3511

Slideshttp://slideshare.net/lapistano

[email protected]

IRC on freenodelapistano

Page 28: international PHP2011_Bastian Feder_jQuery's Secrets

License

This set of slides and the source code included in the download package is licensed under the

Creative Commons Attribution-Noncommercial-Share Alike 2.0 Generic License

http://creativecommons.org/licenses/by-nc-sa/2.0/deed.en


Recommended