2010-11-30 2 views
2

Donc, je suis un débutant complet et coincé sur une déclaration conditionnelle. Voici mon code:Débutant bloqué sur une question jQuery ... déclaration conditionnelle

<script type="text/javascript"> 
$(document).ready(function(){ 
if($('span.fc_cart_item_price_total') == 0) { 
    $(span.fc_info).addClass('foo'); 
}; 
}); 
</script> 

Alors je tente de voir si la durée d'une classe de « fc_cart_item_price_total » a une valeur de « 0 », pour ensuite ajouter une classe de « foo » pour la durée avec une classe de ".fc_info". Ce code ci-dessus ne fonctionne pas. Voici le code HTML:

<span class="fc_info">Info 1</span><br /> 
<span class="fc_cart_item_price_total">$0.00</span><br /> 
<span class="fc_info">Info 2</span> 

Voici l'autre défi que j'ai. J'essaie de sélectionner l'intervalle avec la valeur de "fc_info" avant l'intervalle avec la classe de "fc_cart_item_price_total" mais je n'ai aucune idée de la façon de sélectionner cette durée.

+0

@user, votre texte a 0,00 $ droit, vous devez convertir en un zéro avant comparision – kobe

+0

Rappelez-vous que '$ (sélecteur)' retourne un * nouvel objet jQuery * (par exemple de 0 ou "0,00 $" ou rien d'autre d'arbitraire). –

Répondre

1

Pour chaque article de panier dont le prix est $ 0.00, cela ajoutera la classe "foo" au précédent (et seulement le précédent) fc_info.

$(function() { 
    $(".fc_cart_item_price_total:contains($0.00)").each(function(i, n) { 
     (n=$(n)).prevAll(".fc_info:first").addClass("foo"); 
    }); 
}); 
+0

Très cool ... Je cherchais en fait le codage qui ne permet que le frère précédent et pas tous les frères et soeurs précédents ... merci beaucoup! – flinx777

+0

Ne voulant pas dire ça, mais mon code ne concernait que le premier frère précédent. – sberry

+0

@ sberry2A Pas mon intention de voler votre fusée ici. Je n'ai pas vu ta réponse avant de poster. Pour ma défense, nous avons des prises légèrement différentes, car la mienne traite distinctement chaque rangée de chariots :-) – einaros

0

Je pense que vous devez sortir le code HTML de la plage. Quelque chose comme:

<script type="text/javascript"> 
$(document).ready(function(){ 
if($('span.fc_cart_item_price_total').text() == 0) { 
    $(span.fc_info).addClass('foo'); 
}; 
}); 
</script> 

Mais alors vous devez le comparer à "$ 0.00" ou couper le $ off avant de comparer.

+0

vous avez deux erreurs dans le code, .get ('html') cela aura seulement du texte, la deuxième chose est fc_info doit être .class nom ... – kobe

+0

Merci, gov. J'ai trouvé l'erreur text() et l'ai corrigé. Je vois votre réponse ci-dessous, donc je vais juste laisser le mien cassé afin que vous puissiez obtenir le crédit d'avoir répondu * correctement *. :-) –

+0

rien comme ça, je viens de le mentionner pour que vous le sachiez, est-ce que mon commentaire vous a blessé ou quelque chose ?? – kobe

0

le devrait fonctionner ci-dessous ... s'il vous plaît essayer

<script type="text/javascript"> 
    $(document).ready(function(){ 
    if($('.fc_cart_item_price_total').text() == 0) { 
     $('.fc_info').addClass('foo'); 
    }; 
    }); 
    </script> 
0

Pour rendre le code ci-dessus travail

<script type="text/javascript"> 
$(document).ready(function(){ 
if($('span.fc_cart_item_price_total').html() == 0) { 
    $(span.fc_info:first).addClass('foo'); 
}; 
}); 
</script> 

Et pour sélectionner la première classe fc_info

Utilisez $(".fc_info:first") comme sélecteur

2

Comparer avec 0 n'est pas le meilleur Tu peux le faire. Essayez ceci:

if (!parseFloat($('.fc_cart_item_price_total').text()) { 
.... 

Utilisez parseInt ou parseFloat en fonction des données que vous attendez.

+1

Je risquerais de deviner que parseFloat serait une meilleure option, car un prix total peut être inférieur à 1,00 $? – sberry

+0

@ sberry2A vrai. merci –