%%%%%%%%%%%%%% % Some Headers
Title: Prototype ⇔ jQuery - To and from JavaScript libraries
%%%%%%%%%%%%%%%%%%%% % Some Extra Styling
%css
table#ajax { width: 100%; }
table#ajax td { text-align: center; }
%end
%%%%%%%%%%%%% % Slides Start Here
To and from JavaScript libraries
(Adapted S6 Version from Original PDF Slide Deck)
- Extends the DOM and core JavaScript objects
- An arsenal of utility functions
Based on Prototype 1.5.1 & 1.6 {:.right .smaller}
- Centred around chaining and binding methods to objects and elements
- Totally encapsulated
- Aims to be exceptionally easy to develop with
Based on jQuery 1.2.1 {:.right .smaller}
{% left %}
Prototype has:
- Class creation
- Try.these
- Position, Range
{% end %}
{% right %}
jQuery has:
- No Conflict (
$
) - Effects
{% end %}
Non-exhaustive list, and in most case, the functionality can be implemented with plugins. {: .smaller}
- Prototype uses
$
for id based selection - jQuery
$
= CSS based selector (=$$
in Prototype)
Note that Prototype will return element objects or arrays of elements for most methods. jQuery will usually return a jQuery object (which looks like an array in Firebug). {:.smaller}
Prototype
$('speech1').show();
jQuery
$('#speech1').show();
- Prototype -
$$
To narrow down it's context use
Element.getElementsBySelector(selector)
(or Element.select(selector)
in 1.6)
- jQuery -
$
Virtually all of jQuery's DOM selection is done using CSS 1-3
Prototype
$$('.dialog').invoke('show');
$('final-speech').getElementsBySelector('DIV.final-dialog').each(Element.hide);
// 1.6
$('final-speech').select('DIV.final-dialog').invoke('hide');
jQuery
$('.dialog').show();
$('#final-speech DIV.final-dialog').hide();
- Prototype - uses Event object
- jQuery - uses two types of syntax, both meaning the same thing
jQuery uses different methods to execute the ready function when the DOM is ready, using specific methods for Internet Explorer and for Safari (1) {:.smaller}
1: window.onload
again, The window.onload
Problem Revisited
Prototype
Event.observe(window,'load',function(){});
Prototype 1.6
document.observe('contentloaded',function{});
jQuery
$(document).ready(function(){});
// or
$(function(){});
Prototype - current active element, and position is passed in to callback function.
[el1, el2].each(fn(el, i))
jQuery - current element position passed in to callback function, and binds the function to current active element (i.e. this is set to the active element).
$([el1, el2]).each(fn(i))
Prototype - up, down, next & previous
jQuery - parent/s, children, next, prev (& nextAll, prevAll)
Prototype - Insertion class: After, Before, Bottom, Top, update (1.6 will add: Element.insert
)
jQuery - after, before, append, prepend & html
Prototype - addClassName
, removeClassName
, toggleClassName
, hasClassName
jQuery - addClass
, removeClass
, toggleClass
, is (for class matching)
Prototype - Event class: observe
, stopObserving
(Prototype 1.6 will support Element.observe
)
jQuery - bind
, unbind
(also supports shortcuts: .click
, .dblclick
, .mouse*
, .ready
,
.focus
, .blur
)
Prototype - Event.stop()
jQuery - return false or event.stopPropagation()
(event is passed in
to the callback)
Prototype
new Ajax.Request(url[, options])
jQuery
$.ajax(options) // url included in options
Prototype | jQuery | |
---|---|---|
onCreate |
⇔ | beforeSend |
onSuccess |
⇔ | success |
onException |
⇔ | error |
onComplete |
⇔ | complete |
{:#ajax} |
Prototype
new Ajax.Request('/profile', {
method: 'post',
parameters:$H({'action':'check_username','username':$F('username')}),
onSuccess: function (j) {
// do stuff with response
}
});
jQuery
$.ajax({ url: '/profile',
data: {'action':'check_username','username': $('#username').val()},
type: 'post',
success: function (json) {
// do stuff with response
}
});
Prototype
Element.addMethods({myPlugin : function(element, args) { return element; }});
jQuery
jQuery.fn.myPlugin = function (args) { return this; };
Prototype - Prototype.Browser.IE
, .Webkit
, etc.
jQuery - jQuery.browser.msie
, .safari
, etc.
Prototype | jQuer y | |
---|---|---|
API | prototypejs.org/api |
docs.jquery.com/Core |
Tutorials | prototypejs.org/learn |
docs.jquery.com/Tutorials |
Effects | script.aculo.us |
docs.jquery.com/Effects |
{:#resources} |