2009-10-24 8 views
1

Ce code est censé ajouter un attribut de classe à l'élément span "saved" avec le bon identifiant. mais un peu ce n'est pas le cas. Peut-être que quelque chose me manque, je n'arrive pas à le comprendre.Pourquoi mon code jQuery ne parvient-il pas à faire correspondre les éléments avec des identifiants dynamiques?

<script type="text/javascript"> 

jQuery(function($){ 

    $("a[id^='savebook-']").click(function(){ 
    match = this.id.match(/savebook-(\d+)/); 
    savedclass = $("span#saved-"+match[1]) 
    savedclass.addClass("saved"); 
    }); 

}); 
</script> 

Exemple d'utilisation

<li><span class="save"> 
    <a href="#" id="savebook-1" rel="nofollow" class="button">Save Book</a> 
    <span id="saved-1" >&nbsp;&nbsp;&nbsp;</span> 
</span></li> 
+0

Ce que je veux est       être changé pour       Les adresses de solution donné seulement adresse le parent – kazey

+0

@kazey: désolé pour la confusion - en quelque sorte, j'ai raté le troisième élément de votre échantillon. En dehors de quelques problèmes mineurs (Greg souligne que vous voulez probablement retourner false, et vous devriez aussi utiliser des variables locales), il ne semble pas y avoir de problème avec votre code ... – Shog9

+1

Ok j'ai corrigé Merci, les gars, le problème était avec l'élément span – kazey

Répondre

2

Vous devez return false; de la fonction click() pour empêcher l'action par défaut. En dehors de cela, cela fonctionne pour moi (sur Google Chrome).