IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

à propos de la méthode has()


Sujet :

jQuery

  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut à propos de la méthode has()
    J'ai une liste :


    • 1


    • 1.1
      • 1.1.1
      • 1.1.2
    • 1.2
    • 2
    • 3


    Je veux sélectionner tous mes li qui ont des descendants à partir du ul de plus haut niveau.

    Je fais donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $(this).find("li:has(ul)")
    Seulement dans cet exemple il me sélectionne aussi les niveaux "1.2", "1.1.1" et "1.1.2" alors qu'il ne devrait pas puisqu'ils ne contiennent pas de ul.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Le find() est correct.
    Si vous affichez le text() ou le html() de l'élément il donne logiquement la totalité de son contenu et c'est ainsi que la recherche vous parait fausse, voir exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="Author" content="Daniel Hagnoul" />
        <title>Page type</title>
        <style type="text/css">
            body {
                background-color:#696969;
                color:#000000;
                font-family:Arial, Helvetica, sans-serif;
                font-size:medium;
                font-style:normal;
                font-weight:normal;
                line-height:normal;
                letter-spacing:normal;
            }
            h1,h2,h3,h4,h5 {
                font-family:"Times New Roman", Times, serif;
            }
            div,p,h1,h2,h3,h4,h5,h6,ul,ol,dl,form,table,img {
                margin:0px;
                padding:0px;
            }
            p {
                padding:6px;
            }
            ul,ol,dl {
                list-style:none;
                padding-left:6px;
                padding-top:6px;
            }
            li {
                padding-bottom:6px;
            }
            div#conteneur {
                width:95%;
                margin:12px auto;
                padding:6px;
                background-color:#FFFFFF;
                color:#000000;
                border:1px solid #666666;
                font-size:0.8em;
            }
            div#affiche {
                margin:12px;
                border:1px solid #999999;
            }
        </style>
        <!-- <script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.js"></script> -->
        <script type="text/javascript" src="../lib/jquery-1.3.2.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                var objs = $("ul#monUL").find("li:has(ul)");
     
                $.each(objs, function(i,item){
                    console.log("item[" + i + "] = " + item);
                    console.log("item[" + i + "] id = " + item.id);
                    console.log("item[" + i + "] texte = " + $(item).text());
                });
            });
        </script>
    </head>
    <body>
        <div id="conteneur">
            <ul id="monUL">
                <li id="li1">
                    li 1
                    <ul>
                        <li id="li11">
                            li 1.1
                            <ul>
                                <li>li 1.1.1</li>
                                <li>li 1.1.2</li>
                            </ul>
                        </li>
                        <li>li 1.2</li>
                    </ul>
                </li>
                <li>li 2</li>
                <li>li 3</li>
            </ul>
            <div id="affiche"></div>
        </div>
    </body>
    </html>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/08/2008, 23h47
  2. Question à propos de la méthode display() d'OpenGL
    Par choko83 dans le forum OpenGL
    Réponses: 7
    Dernier message: 02/05/2008, 16h03
  3. A propos des méthodes avec un "?" à la fin
    Par tsing dans le forum Ruby
    Réponses: 4
    Dernier message: 05/12/2007, 21h49
  4. A propos des méthodes constantes
    Par Sahara dans le forum C++
    Réponses: 4
    Dernier message: 05/01/2007, 00h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo