Équivalence de la fonction MooTools $defined() sous jQuery
Dans mon récent apprentissage de l’excellente librairie JavaScript jQuery, j’ai cherché une équivalence de la fonction MooTools $defined() permettant de déterminer si un objet est défini ou non. Ce test est très pratique sous MooTools car il permet par exemple d’améliorer la généricité des scripts ou encore d’éviter d’appeler des objets non définis sur la page courante et ainsi provoquer une erreur.
Voici donc un exemple de code jQuery permettant de tester si l’élément HTML portant l’id « define » existe ou non. Si et seulement s’il existe, nous lui affecterons alors un événement click. Notez également l’utilisation de preventDefault permettant de stopper le comportement par défaut de l’événement, comme par exemple le scroll en haut de page lors du clic sur un lien :
1 2 3 4 5 6 7 8 9 10 11 12 |
//If an HTML element with a "define" id exists : if($('#define').length) { $('#define').click(function(e){ //We are stopping the default event like scrolling to the top of the page for a link e.preventDefault(); //Do some stuff here }); } |
Ou alors pour rester dans la même logique que Mootools:
function $defined(obj){
return !!$(obj).length;
}
if($defined(« #el »)){alert(‘ok’);}
ou encore
if($defined($(‘#el .monEl’))){alert(‘ok’);}
Mais il serait plus logique de passer par un $(‘#monEl’).defined(); pour respecter la logique jQuery 🙂