2010-10-09 16 views
2

J'ai un peu gros morceau de mon code ici: « Si le niveau 0 a une classe de « .children », ne pas réécrire le HREF dans ce lien de »jQuery/Javascript: Quel est le problème avec mon 'If'?

if(".level-0.find('.children').length == 1"){ 
    $(".level-0 > a").attr("href", ""); 
}; 

Fondamentalement, je veux dire

Le problème est qu'il écrase TOUJOURS le HREF, comme s'il n'y avait pas de conditionnel. J'ai changé cela "== 1" à "= 10000000" ou "20" ou "15" et il écrase TOUJOURS le HREF. C'est juste agir comme s'il n'y avait pas de déclaration conditionnelle. Je suis sûr que c'est une gaffe synatx, mais je ne peux pas le voir.

Encore une fois, merci d'aider un n00b trébucher vers une compétence minimale. Voici le code que nous cherchons à changer, juste pour le contexte.

<li class="level-0 page_item page-item-264"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=264" title="Ca$h Rulez">Ca$h Rulez</a> 
<ul class='children'> 
    <li class="level-1 page_item page-item-266"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=266" title="1994">1994</a></li> 
    <li class="level-1 page_item page-item-268"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=268" title="1995">1995</a></li> 
    <li class="level-1 page_item page-item-270"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=270" title="1996">1996</a></li> 
    <li class="level-1 page_item page-item-272"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=272" title="1997">1997</a></li> 
    <li class="level-1 page_item page-item-274"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=274" title="1998">1998</a></li> 
    <li class="level-1 page_item page-item-276"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=276" title="1999">1999</a></li> 
    <li class="level-1 page_item page-item-278"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=278" title="2000">2000</a></li> 
    <li class="level-1 page_item page-item-280"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=280" title="2001">2001</a></li> 
</ul> 
</li> 
+0

Ceci est connu comme la magie de type coercition ... – ChaosPandion

+0

@Chaos - Ceci est connu comme une erreur de syntaxe. –

+0

@Peter - Je ne crains pas. Cela vient directement de la spécification: Le résultat est faux si l'argument est la chaîne vide (sa longueur est zéro); sinon le résultat est vrai. – ChaosPandion

Répondre

9

Ne devrait-il plutôt

if ($(".level-0").find('.children').length == 1) { 
    $(".level-0 > a").attr("href", ""); 
} 

?

La fin de vendredi peut-être? :)

0

Vous ne pouvez pas utiliser votre condition là comme vous le faites, parce que si vous avez plus de 1 .level-0, vous avez pas de relation entre .level-0 et son > un
Si votre condition correspond seulement à 1 fois, tous .level-0> a sera accédé à l'intérieur du document.

$('>a',$(".level-0").has('.children')) 

... sélectionnera tous <a> « s de sécurité pour enfants .level-0, si .level-0 contient au moins 1 .children