jQuery succinctement Sélection jQuery

Les filtres jQuery personnalisés peuvent sélectionner des éléments lorsqu'ils sont utilisés seuls

Il n’est pas nécessaire de fournir un élément réel en conjonction avec un filtre, tel que $ ('div: hidden'). Il est possible de simplement passer le filtre seul, partout où une expression de sélecteur est attendue.

Quelques exemples:

 // Sélectionne tous les éléments cachés $ (': hidden'); // Sélectionne tous les éléments div, puis uniquement les éléments pairs $ ('div'). Filter (': even');

Grokking the: masqué et: filtre visible

Les filtres de sélecteur jQuery personnalisés :caché et :visible ne prenez pas en compte la propriété de visibilité CSS comme on pourrait s’y attendre. Pour déterminer si un élément est masqué ou visible, jQuery détermine si cet élément consomme de l’espace dans le document. Pour être exact, un élément est visible si son navigateur a signalé offsetWidth ou offsetHeight est supérieur à 0. De cette façon, un élément qui pourrait avoir un CSS afficher valeur de bloc contenu dans un élément avec un afficher valeur de aucun signalerait avec précision qu'il n'est pas visible.

Examinez attentivement le code et assurez-vous de bien comprendre pourquoi la valeur renvoyée est vrai Même si le

être sélectionné a un style en ligne de bloc de visualisation.

    

Utilisation de la méthode Is () pour renvoyer une valeur booléenne

Il est souvent nécessaire de déterminer si l'ensemble d'éléments sélectionné contient effectivement un élément spécifique. En utilisant le est() méthode, nous pouvons vérifier le jeu actuel par rapport à une expression / un filtre. Le chèque reviendra vrai si l'ensemble contient au moins un élément sélectionné par l'expression / le filtre donné. S'il ne contient pas l'élément, un faux la valeur est retournée. Examinez le code suivant:

    
jQuery
jQuery

Il devrait être évident que la deuxième alerte() retournera une valeur de false parce que notre ensemble de wrapper ne contient pas de

qui avait un identifiant valeur d'attribut de i2. le est() La méthode est assez pratique pour déterminer si le paquet contient un élément spécifique.

Remarques: À partir de jQuery 1.3, le est() La méthode prend en charge toutes les expressions. Auparavant, les expressions complexes telles que celles contenant des sélecteurs de hiérarchie (telles que +, ~, et >) toujours retourné vrai.

Le filtre est utilisé par d'autres fonctions jQuery internes. Par conséquent, toutes les règles qui s’y appliquent s’appliquent ici, ainsi que.

Certains développeurs utilisent est ('. classe') déterminer si un élément a une classe spécifique. N'oubliez pas que jQuery a déjà une méthode appelée hasClass ('classe'), qui peut être utilisé sur des éléments contenant plus d'une valeur de classe. Mais à vrai dire, hasClass () est juste un emballage pratique pour le est() méthode.


Vous pouvez transmettre plusieurs expressions de sélecteur à jQuery

Vous pouvez fournir au premier paramètre de la fonction jQuery plusieurs expressions séparées par une virgule: $ ('expression, expression, expression'). En d'autres termes, vous n'êtes pas limité à la sélection d'éléments en utilisant une seule expression. Par exemple, dans l'exemple ci-dessous, je passe à la fonction jQuery trois expressions séparées par une virgule.

    
jQuery

est le

  • meilleur!

Chacune de ces expressions sélectionne les éléments DOM qui sont tous ajoutés au jeu d'encapsuleurs. Nous pouvons ensuite utiliser ces éléments avec les méthodes jQuery. Gardez à l'esprit que tous les éléments sélectionnés seront placés dans le même ensemble de wrappers. Une méthode inefficace consiste à appeler la fonction jQuery trois fois, une fois pour chaque expression..


Vérification du wrapper défini .length pour déterminer la sélection

Il est possible de déterminer si votre expression a sélectionné quelque chose en vérifiant si le wrapper a une longueur. Vous pouvez le faire en utilisant la propriété array longueur. Si la longueur Si la propriété ne renvoie pas 0, vous savez qu'au moins un élément correspond à l'expression que vous avez transmise à la fonction jQuery. Par exemple, dans le code ci-dessous, nous vérifions sur la page un élément avec un identifiant de "pas ici". Devine quoi? Ce n'est pas là!

       

Remarques: Si cela n’est pas évident, la propriété length peut également indiquer le nombre d’éléments du groupe de wrapper. En d’autres termes, combien d’éléments ont été sélectionnés par l’expression transmise à la fonction jQuery..


Création de filtres personnalisés pour la sélection d'éléments

Les capacités du moteur de sélecteur jQuery peuvent être étendues en créant vos propres filtres personnalisés. En théorie, tout ce que vous faites ici repose sur les sélecteurs personnalisés qui font déjà partie de jQuery. Par exemple, supposons que nous voulions sélectionner tous les éléments d'une page Web qui sont absolument positionnés. Puisque jQuery n’a pas déjà une coutume : positionAbsolute filtrer, nous pouvons créer notre propre.

    
absolu
absolu
statique
absolu
statique
absolu

La chose la plus importante à comprendre ici est que vous n'êtes pas limité aux sélecteurs par défaut fournis par jQuery. Vous pouvez créer le vôtre. Cependant, avant de passer votre temps à créer votre propre version d’un sélecteur, vous pouvez simplement essayer la filtre() méthode avec une fonction de filtrage spécifiée. Par exemple, j'aurais pu éviter d'écrire le : positionAbsolute sélecteur en filtrant simplement la

éléments dans mon exemple précédent avec une fonction je passe à la filtre() méthode.

 // Retirer 
éléments du wrapper // set qui ne sont pas positionnés de façon absolue $ ('div'). filter (function () return $ (this) .css ('position') === 'absolu';); // ou // Supprime tous les éléments du wrapper // set qui ne sont pas positionnés de manière absolue $ ('*'). filter (function () return $ (this) .css ('position') === 'absolu' ;);

Remarques: Pour plus d'informations sur la création de vos propres sélecteurs, je suggère la lecture suivante: http://www.bennadel.com/blog/1457-How-To-Build-A-Custom-jQuery-Selector.htm


Différences entre le filtrage par ordre numérique et les relations DOM

jQuery fournit des filtres pour filtrer un ensemble d'encapsuleurs en fonction du contexte numérique d'un élément dans l'ensemble.

Ces filtres sont:

  • :premier
  • :dernier
  • :même
  • :impair
  • : eq (index)
  • : gt (index)
  • : lt (index)

Remarques: Les filtres qui filtrent le groupe d'encapsuleurs lui-même le font en filtrant les éléments de l'ensemble à un point de départ de 0 ou un index de 0. Par exemple : eq (0) et :premier accéder au premier élément de l'ensemble - $ ('div: eq (0)') - qui est à un index 0. Ceci est en contraste avec le : nième enfant filtre qui est un indexé. Signification, par exemple, : nième enfant (1) renverra le premier élément enfant, mais en essayant d'utiliser : nième enfant (0) ne fonctionnera pas. En utilisant : nième enfant (0) sélectionnera toujours rien.

En utilisant :premier sélectionnera le premier élément de l'ensemble en :dernier sélectionnera le dernier élément de l'ensemble. N'oubliez pas qu'ils filtrent l'ensemble en fonction de la relation (hiérarchie numérique commençant à 0) au sein de l'ensemble, mais pas les relations des éléments dans le contexte du DOM. Compte tenu de ces connaissances, il devrait être évident que les filtres :premier, :dernier, et : eq (index) retournera toujours un seul élément.

Si ce n'est pas évident, permettez-moi d'expliquer davantage. La raison pour laquelle :premier Vous ne pouvez renvoyer qu'un seul élément car il ne peut y avoir qu'un seul élément dans un ensemble qui est pris en compte en premier lorsqu'il n'y a qu'un seul ensemble. Cela devrait être assez logique. Examinez le code ci-dessous pour voir ce concept en action.

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • dix

Avec une compréhension claire de la manipulation de l'ensemble lui-même, nous pouvons améliorer notre compréhension de la sélection d'éléments en utilisant des filtres qui sélectionnent des éléments ayant des relations uniques avec d'autres éléments dans le DOM réel. jQuery fournit plusieurs sélecteurs pour le faire. Certains de ces sélecteurs sont personnalisés, tandis que d'autres sont des expressions CSS bien connues pour la sélection d'éléments DOM.

  • ancêtre descendant
  • parent> enfant
  • prev + next
  • frères et soeurs
  • : nième enfant (sélecteur)
  • :premier enfant
  • :dernier enfant
  • :fils unique
  • :vide
  • : a (sélecteur)
  • :parent

L'utilisation de ces filtres de sélection permet de sélectionner des éléments en fonction de leur relation dans le DOM en tant qu'éléments d'autres éléments du DOM. Pour illustrer ce concept, regardons du code.

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

Si vous êtes surpris par le fait que $ ('li: nth-child (impair)'). text () renvoie la valeur 135135, vous n'êtes pas encore dans les filtres de relation. La déclaration, $ ('li: nième enfant (impair)') dit verbalement serait "trouver tous

  • éléments de la page Web qui sont des enfants, puis filtrez-les par enfants impairs. "Eh bien, il se trouve qu'il existe deux structures dans la page qui ont un groupe de frères et sœurs composé de
  • s. Mon argument est le suivant: le groupe d'encapsuleurs est composé d'éléments basés sur un filtre qui prend en compte la relation d'un élément avec d'autres éléments du DOM. Ces relations peuvent être trouvées à plusieurs endroits.

    Le concept à retenir est que tous les filtres ne sont pas créés de manière égale. Assurez-vous de bien comprendre lesquels filtrent en fonction des relations DOM, par exemple. :fils unique-et lesquels filtrent par la position des éléments, par exemple. : eq ()-dans l'ensemble emballé.


    Sélection d'éléments par ID lorsque la valeur contient des méta-caractères

    Les sélecteurs jQuery utilisent un ensemble de méta-caractères (par exemple. # ~ [] => ) que lorsqu'il est utilisé comme une partie littérale d'un nom (par exemple. id = "# foo [bar]") devrait être échappé. Il est possible d'échapper à des caractères en plaçant deux barres obliques inverses avant le caractère. Examinez le code ci-dessous pour voir comment l'utilisation de deux barres obliques inverses dans l'expression selection permet de sélectionner un élément avec une valeur d'attribut id de #foo [bar].

        
    jQuery

    Voici la liste complète des caractères à échapper lorsqu'ils sont utilisés comme une partie littérale d'un nom..

    • #
    • ;
    • Et
    • ,
    • .
    • +
    • *
    • ~
    • '
    • :
    • "
    • !
    • ^
    • $
    • [
    • ]
    • (
    • )
    • =
    • >
    • |
    • /

    Filtres de sélecteur d'empilement

    Il est possible d’empiler des filtres de sélecteur, par exemple. un [titre = "jQuery"] [href ^ = "http: //"]. L'exemple évident en est la sélection d'un élément ayant des attributs spécifiques avec des valeurs d'attributs spécifiques. Par exemple, le code jQuery ci-dessous ne sélectionnera que éléments de la page HTML qui:

    • Contenir un href attribut avec une valeur de départ de "http: //"
    • Avoir un Titre attribut avec une valeur de "jQuery"

    Seulement un est sélectionné.

        jQuery.com jQuery.com 1 jQuery.com    

    Notez dans le code comment nous avons empilé deux filtres pour accomplir cette sélection.

    D'autres filtres de sélecteur peuvent être empilés en plus des filtres d'attributs. Par exemple:

     // Sélectionne le dernier 
    contenu dans le // groupe de wrapper contenant le texte "jQuery" $ ('div: last: contient ("jQuery")') // Obtient toutes les cases à la fois visibles et sélectionnées $ (': case à cocher: visible: cochée ')

    Le concept à retenir est que les filtres de sélection peuvent être empilés et utilisés en combinaison.

    Remarques: Vous pouvez également imbriquer et empiler des filtres - par exemple. $ ('p'). filter (': pas (: premier): pas (: dernier)')


    Filtres de sélecteur d'imbrication

    Les filtres de sélecteur peuvent être imbriqués. Cela vous permet de manipuler les filtres de manière très concise et puissante. Ci-dessous, je donne un exemple de la manière dont vous pouvez imbriquer des filtres pour effectuer un filtrage complexe..

        
    javascript
    jQuery
    javascript
    jQuery
    javascript
    jQuery

    Le concept à retenir est que les filtres de sélecteur peuvent être imbriqués.

    Remarques: Vous pouvez également imbriquer et empiler des filtres - par exemple. $ ('p'). filter (': pas (: premier): pas (: dernier)')


    Filtre le: nth-child () Filter

    le : nième enfant () Le filtre a de nombreuses utilisations. Par exemple, supposons que vous ne souhaitiez sélectionner que tous les trois

  • élément contenu dans un