2009-05-14 5 views
-1

J'utilise selectorgadget pour m'aider à sélectionner des éléments sur le document. Mais quand je l'ai utilisé sur jQuery ça ne marche pas. Le sélecteur nth-child ne semble pas travailler pour moi.J'ai un problème en sélectionnant un élément dans jQuery

<div id = "wrap"> 
<div class = "book"> 
    <div class = "chapter"> 
     <p class = "text"> 
      <table> 
       <tbody> 
        <tr> 
         <td>Title</td> 
         <td> 
          <b>jQuery</b> 
         </td> 
        </tr> 
       </tbody> 
      </table> 
     <p> 
    </div> 
</div> 
</div> 

Le code HTML est ci-dessus. Il y a beaucoup de classe de livres. Le div wrap est le wrapper qui les entoure tous. Sélecteur Gadget a déclaré que lorsque j'utilise:

$("#wrap tr:nth-child(1) b") Il doit sélectionner l'élément TD avec l'étiquette <b> dans celui-ci. Donc, il devrait sélectionner "jQuery".

Je l'ai essayé, mais cela n'a pas fonctionné. Quand j'ai essayé:

var query = $("#wrap tr:nth-child(1) b").text(); 
alert(query); 

Le navigateur envoie une alerte sans texte. Et quand j'ai essayé:

var query = $("#wrap tr:nth-child(1) b").html(); 
alert(query); 

Le navigateur envoie une alerte NULL.

Qu'est-ce qui ne va pas?

+0

pourriez-vous afficher le balisage? –

+0

Ouais, j'ai oublié d'inclure le balisage .. Désolé! Merci –

+0

J'ai juste essayé votre code et cela a fonctionné très bien pour moi ... –

Répondre

0

Avez-vous essayé

modifié d'abord, je na pas remarqué le tr: nth-enfant, il n'y a pas tr 1 enfant dans ce tableau, mais il y a un td à l'index 1

var query = $(".text td:nth-child(1) b").html(); 
alert(query); 
+0

Ouais, il retourne null. Chaque fois que j'utilise le nième-enfant. Je reçois le nul à chaque fois. J'utilise greasemonkey avec jQuery. Peut-être que je ne peux pas utiliser nth-child dans greasemonkey? –

+0

John Je peux utiliser .text tr b. Mais je veux savoir pourquoi je ne peux pas utiliser le nième enfant. Parce que j'ai besoin de sélectionner d'autres éléments plus compliqués dans le document qui nécessite l'utilisation de nth-child. –

+0

au lieu de tr utiliser td –

0

En tester votre échantillon dans Firefox 3 et IE8, j'ai pu récupérer le texte que vous attendiez en utilisant votre sélection après un tweak - j'ai ajouté une carte d'identité de « enveloppe » à votre élément de table:

<table id="wrap"> 

une fois que cela a été ajouté dans ton Le sélecteur semblait fonctionner correctement. Y a-t-il une plate-forme particulière avec laquelle vous rencontrez des problèmes?

+0

J'utilise Greasemonkey. Ce n'est pas mon document HTML. Peut-être que j'ai besoin d'ajouter une classe à toute la table? –

0

J'ai juste essayé votre code d'exemple et cela a fonctionné immédiatement. Quelle version de jQuery utilisez-vous? Il travaille en 1.3.2

Voici l'exemple de travail: http://jsbin.com/uzuzu/edit

+0

J'utilise 1.3.2. Hmm, je pense que le problème est dans Greasemonkey .. J'utilise Greasemonkey avec jQuery. –

+0

Comment faites-vous référence à jQuery? utilisez-vous unsafeWindow.jQuery? – nickf

2

Je l'ai essayé avec FF 3.0.10, jQuery 1.3.2, Greasemonkey 0.8.2

var query = $("#wrap tr:nth-child(2) b").text(); 
returns "jQuery" 

le 2 nth-child() fait l'affaire !! L'index pour le nième-enfant commence à partir de 1 non 0

0

Vous avez besoin de nth-child (2),: nth-child (1) sélectionne le titre. Rappelez-vous que: eq est basé sur 0, alors que: nth-child() est basé sur 1. Déroutant!

Questions connexes