jQuery sélecteur [attribut] ne revenant premier élément, toutes

voix
4

Je suis en train d'appliquer un style à tous les éléments avec un attribut title. Pour une raison quelconque ce code est que le premier retour, pas tous. Je manque probablement quelque chose d'évident ... Toute aide serait génial, merci!

$([title]).each(function() {

   doSomething(this);

}
Créé 06/07/2009 à 18:32
source utilisateur
Dans d'autres langues...                            


6 réponses

voix
1

Il peut juste être de retour l'élément TITLE de la page. Essayer:

$("*[title]").each(blah);

EDIT : Le test, cela va faire ce que vous voulez, mais il en sera ce que vous aviez en fait, il doit être quelque chose avec votre code HTML. Pour référence, voici ce que je:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Blah</title>
  <script src="http://code.jquery.com/jquery-latest.js"></script>


  <script>
  $(document).ready(function(){
    var titles = $('*[title]');
        alert(titles.length);
  });
  </script>
</head>
<body>
  <a title="blah" href="#">blah</a>
    <a title="blah" href="#">blah</a>
    <a title="blah" href="#">blah</a>
    <a title="blah" href="#">blah</a>
    <a title="blah" href="#">blah</a>
</body>
</html>

En utilisant seulement les titres var = $ ( '[title]'); retour 5 éléments, comme il aurait dû.

Créé 06/07/2009 à 18:35
source utilisateur

voix
2

Vous devez fermer votre each ( ); .

Créé 06/07/2009 à 18:39
source utilisateur

voix
6

Votre code est correct ( à part des disparus , );je suppose est juste une erreur de coller) et devrait fonctionner.

La seule raison pour laquelle cela ne fonctionnerait pas est si vous n'avez pas votre code enroulé autour de $ (document) .ready. Si vous n'êtes pas familier avec $ (document) .ready il est un événement spécial qui a jQuery que les feux dès que toute la structure DOM est prêt à manipuler. Si vous avez votre Javascript en haut de votre page tout ce que vous exécuter en dehors de $ (document) .ready sera agir contre un DOM vide parce que le navigateur n'a pas eu le temps de créer les nœuds encore. Donc , chaque fois que vous voulez manipuler des éléments ( en particulier une requête pour obtenir tous les éléments qui ont un titre) , vous avez certainement besoin de mettre le code autour de cet événement spécial.

En gardant cela à l'esprit, j'ai essayé le code suivant, ce qui placerait une bordure rouge autour des éléments avec un titre:

$(document).ready(function() {
    $("[title]").each(function() {
        $(this).css('border','1px solid red');
    });
});

Et il a fonctionné correctement .

Créé 06/07/2009 à 18:41
source utilisateur

voix
1

Un bon conseil pour essayer d' abord si des choses étranges se produisent avec des sélecteurs est de vérifier le balisage rendu peut effectivement valider à w3c . sans dom valide , vous pouvez vous attendre à des choses étranges et wonderfull de scripting dom et sélecteurs.

Créé 06/07/2009 à 18:51
source utilisateur

voix
3

Je viens de tombé sur cette question. Serait - ce que vous utilisez une ancienne version de la bibliothèque jquery.validate identifiés dans ce poste ?

Pour moi, le téléchargement et l' application de la dernière version du plug - in travaillé

Créé 02/08/2009 à 18:01
source utilisateur

voix
1

Cela peut se produire lorsque vous essayez d'utiliser jQuery dans une console de navigateur et jQuery est pas installé sur cette page.

Créé 25/07/2015 à 16:06
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more