2009-09-27 7 views
2

J'ai deux dans un tableau avec les identifiants row_26 et notifyrow_26. notificationrow_26 est ajouté dynamiquement au DOM après le chargement de la page.Problème de sélecteur Jquery

Je souhaite mettre en évidence notificationrow_26. Donc, j'utilise

var deviceUID = 26; 
$("#notificationrow_" + deviceUID).effect("highlight", {}, 3000);  

mais quand je le fais. Il ne met pas en évidence cette ligne. J'ai aussi essayé d'accéder à notificationrow_26 mais il n'y accède pas.

Il met en surbrillance row_26 quand je le demande. J'ai entendu quelque chose à propos de jquery live mais comment puis-je y accéder avec jquery live? Je pense que jquery live n'est que pour des événements et d'autres choses. Je veux juste accéder à cette ligne qui a été ajoutée dynamiquement au DOM.

Ai-je raté quelque chose?

+1

Que diriez-vous de plus de code? La ligne nouvellement ajoutée a-t-elle une couleur de fond? (Il faut un pour 'highlight' pour fonctionner, et les cellules à l'intérieur doivent * pas * avoir un arrière-plan pour les empêcher d'obscurcir l'arrière-plan.) – bobince

Répondre

4

Vous devrez appeler l'instruction .effect après avoir ajouté les éléments au DOM. Vous pouvez utiliser .live si vous attachez des éléments à DOM par 'clic' ou d'autres événements communs (pas 'change' cependant, vous aurez besoin de livequery pour cela).

+1

Pour clarifier ce que dit meder, lorsque vous chargez la page jQuery ira à travers tout élément que vous lui avez demandé de rechercher ou de modifier, et lier les actions à cet élément. Ainsi, lorsque vous ajoutez des éléments au DOM après le chargement, jQuery ne reconnaît pas ces nouveaux éléments à moins d'en être informé. – jakeisonline

1

Je ne connais pas .effect(), est-ce un plugin ou une partie d'un autre framework JavaScript? Le code suivant mettra en évidence la ligne, à condition que il n'y a pas en conflit avec $ raccourci sur la page

var deviceUID = 26; 
$("#notificationrow_" + deviceUID).css('background-color','highlight'); 

cela ne peut être appliqué après la ligne a été insérée dans le DOM (ce que je veux dire est que lorsque la commande est exécuté, il n'affecte que les éléments qui correspondent au sélecteur existant dans le DOM à ce moment). Donc, selon la façon dont la ligne est ajoutée, vous pouvez ajouter la surbrillance dans une fonction de rappel s'il y en a une, enchaîner la commande de surlignement sur la ligne avant/immédiatement après son insertion dans le DOM. Here's a demo pour afficher le code ci-dessus.