jQuery si l’object est présent

J’ai un script qui copie le texte du texte ALT d’une image et crée une zone de légende, puis saisit le texte.

var alt = $("#hoejre p span img").attr("alt"); $('#hoejre p span img').after(''); $('#hoejre p span span').html('' + alt.replace('-', ' ') + ''); 

Cela fonctionne très bien, quand il y a une image. Mais lorsqu’il n’y a pas d’images, le script échoue dans IE7.

Comment puis-je envelopper le VAR avec une phrase IF.

pourquoi appeler une méthode alors que vous pouvez simplement regarder la propriété length?

 if ($imgs.length) { ... /* one or more images exist */ } 

La méthode size ():

 if ($("#hoejre p span img").size() > 0) { var alt = $("#hoejre p span img").attr("alt"); $('#hoejre p span img').after(''); $('#hoejre p span span').html('' + alt.replace('-', ' ') + ''); } 

Les sélecteurs jQuery retournent un tableau.

Vous pouvez vérifier s’il contient des éléments avec la propriété native JS Array.length. Basez votre if sur si la longueur est> 0.

Vous pouvez vérifier le nombre d’objects .size() par un sélecteur jQuery avec .size()

Vérifiez la réponse de fcalderan , qui suggère d’utiliser plutôt la propriété .length .
Le résultat est le même, mais potentiellement plus rapide.

Par exemple, vous pouvez faire ce qui suit:

 var $imgs = $("#hoejre p span img"); if( $imgs.size() > 0 ) { var alt = $imgs.attr("alt"); $('').html('' + alt.replace('-', ' ') + '') .insertAfter( $imgs ); }