2008-09-02 9 views
3

Les bibliothèques JavaScript jQuery et Prototpye refusent de me permettre d'utiliser une variable pour sélectionner un élément de liste par numéro d'index, bien qu'elles acceptent un nombre codé en dur.jQuery et Prototype Selector Madness

Par exemple, dans Prototype ce fonctionne:

$$('li')[5].addClassName('active'); 

Mais cela ne fonctionnera pas, peu importe la façon dont je tente de lancer la variable en nombre ou entier:

$$('li')[currentPage].addClassName('active'); 

En jQuery je reçois bizarrerie similaire. Cela fonctionne:

jQuery('li').eq(5).addClass("active"); 

Mais cela ne fonctionnera pas à nouveau même si la valeur de currentPage est 5 et son type est numéro:

jQuery('li').eq(currentPage).addClass("active"); 

Je suis en train de créer un système de pagination JavaScript et je besoin de définir la classe sur le bouton de la page active. Les éléments de l'élément de liste sont créés dynamiquement en fonction du nombre de pages dont j'ai besoin.

Répondre

1

Il semble que je devais être plus spécifique dans mon sélecteur d'élément, même s'il est étrange qu'un nombre codé dur puisse fonctionner.

jQuery('#pagination-digg li').eq(currentPage).addClass("active"); 
5

Etes-vous certain que currentPage est un nombre entier? Essayez quelque chose comme:

var currentPage = 5; 
jQuery('li').eq(currentPage); 

comme une simple vérification d'intégrité. Si cela fonctionne, vous devriez essayer de lancer le Integer.

2

Assurez-vous que la variable currentPage est correctement définie dans le code auquel vous accédez. Est-ce que la variable peut être changée ailleurs dans le code avant que vous y accédiez? Des outils tels que Firebug peuvent vous aider à ajouter un point d'arrêt au point d'exécution et à voir la valeur de votre variable.