Voici un micro-plugin pour jQuery qui me sauve un temps fou :
jQuery.fn.extend({
'alt' : function(bool, fn_true, fn_false) {
(bool) ? fn_true() : fn_false();
return this;
},
'iif' : function(bool) {
return (bool) ? this : jQuery('');
}
});
En gros, cela évite d’avoir à écrire une structure de if et else. Voici comment l’utiliser :
$('body ul li').alt(
$.browser.msie,
function() {
$(this).css('border', '10px solid red');
},
function() {
$(this).css('border', '1px solid blue');
}
);
Si le premier argument est d’une valeur booléenne égale à true, la fonction passée en deuxième argument est exécutée. Si la première valeur est égale à false, c’est le troisième argument qui est exécuté.
Pour ce qui est de $.iif, voici comment je l’utilise — en comparaison à comment je procèderais habituellement :
// Syntaxe originale
if ($.browser.msie) {
$('body ul li').css('border', '10px solid red');
}
// En utilisant $.iif
$('body ul li').iif($.browser.msie).css('border', '10px solid red');
Si l’argument est égal à true, la chaine est continuée. Sinon, $.iif retourne un objet jQuery vide et donc les méthodes suivantes sont ignorées.
Voilà! Oh, et vous pouvez utiliser ce code comme bon vous semble!
P.S. : En passant, si vous vous demandez pourquoi la méthode ne s’appelle pas $.if au lieu de $.iif, c’est parce que if est un mot réservé en Javascript (en ECMAScript, en fait).
Merci ! Ce genre de petit code est toujours utile … Surtout pour mettre des hacks IE … :)
xethorn (1er mai 2008 à 13:41 EST)
Vous désirez exprimer votre opinion ? Accédez au formulaire d'ajout de commentaire