C'est pourquoi j'ai décidé de me tourner vers jQuery, une librairie plus légère et performante que son prédécesseur. Des effets visuels sont aussi disponibles, sans faire appel à des librairies externes comme le fait prototype avec scriptaculous.
À titre de référence, voici une liste rapide de certaines équivalences entre les deux librairies :
1. Initialisation au chargement de la page
// prototype2. Attacher une fonction à un événement
Event.observe(window, 'load', onLoadFunction );
// ou
document.observe('dom:loaded', onLoadFunction );
// jQuery
$(document).ready( onLoadFunction );
// prototypejQuery possède plusieurs événements, dont blur, change, click, dblclick, focus, keydown, keypress, load, submit, unload...
Event.observe('buttonId', 'click',
function() {
// implement...
}
);
// jQuery
$('#buttonId').click(
function() {
// implement...
}
);
3. Cacher / Montrer un élément
// prototype4. Mettre à jour le contenu HTML
$('divId').show();
$('divId').hide();
// jQuery
$('#divId').show();
$('#divId').hide();
// prototype5. Effets visuels
$('divId').update('Lorem ipsum dolor sit amet...');
// jQuery
$('#divId').html('consectetur adipiscing elit');
// prototype, à l'aide de script.aculo.us6. Avorter un événement
Effect.SlideUp('divId');
// jQuery
$('#divId').slideUp("slow");
// prototype7. Ajouter une classe CSS
Event.stop(e)
// jQuery
e.preventDefault();
// prototypeChaînabilité
$('a').addClassName('link');
// jQuery
$('a').addClass('link');
Toutes les fonctions jQuery ont aussi l'avantage de toujours retourner un objet jQuery, donc on peut enchaîner les appels sans problème :
$('#links').find('a.external').addClass('fooclass');Utiliser jQuery en même temps que prototypeVous voulez utiliser jQuery simultanément à une autre librairie JavaScript ? Il suffit d'activer le mode sans conflits :
jQuery.noConflict();Et finalement, tout comme prototype, jQuery peut aussi construire des requêtes AJAX. Mais j'en ferai le sujet d'une autre chronique prochainement.
jQuery('#divName').hide();
ou
// créer une référence dans une variable
$j = jQuery.noConflict();
$j('#divName').hide();
Aucun commentaire:
Publier un commentaire