jQuery succinctement Core jQuery

Concept de base derrière jQuery

Bien que certaines variantes conceptuelles existent (par exemple, des fonctions $ .ajax) dans l’API jQuery, le concept central de jQuery est "trouver quelque chose, faire quelque chose". Plus spécifiquement, sélectionnez un ou plusieurs éléments DOM dans un document HTML, puis utilisez-les à l’aide des méthodes jQuery. C'est le concept de la grande image.

Pour intégrer ce concept chez vous, réfléchissez au code ci-dessous..

          

Notez que dans ce document HTML, nous utilisons jQuery pour sélectionner un élément DOM (). Avec quelque chose sélectionné, nous faisons quelque chose avec la sélection en appelant les méthodes jQuery texte(), attr (), et ajouter à().

le texte méthode appelée sur l'emballage élément et définissez le texte à afficher de l'élément sur "jQuery". le attr appel établit le href attribuer au site Web jQuery.

Connaître le concept fondamental "trouver quelque chose, faire quelque chose" est essentiel pour progresser en tant que développeur jQuery.


Le concept, derrière le concept, derrière jQuery

Bien que choisir et faire quelque chose soit le concept fondamental de jQuery, je souhaiterais que ce concept soit étendu à la création de quelque chose. Par conséquent, le concept de jQuery pourrait être étendu pour inclure tout d’abord la création, la sélection et la réalisation de quelque chose de nouveau. Nous pourrions appeler cela le concept, derrière le concept, derrière jQuery.

Ce que j'essaie de faire comprendre, c'est que vous n'êtes pas obligé de sélectionner uniquement quelque chose qui est déjà dans le DOM. Il est également important de comprendre que jQuery peut être utilisé pour créer de nouveaux éléments DOM, puis faire quelque chose avec ces éléments..

Dans l'exemple de code ci-dessous, nous créons un nouveau élément qui n'est pas dans le DOM. Une fois créé, il est sélectionné puis manipulé.

       

Le concept clé à retenir ici est que nous créons le élément à la volée puis opérant comme s'il était déjà dans le DOM.


jQuery nécessite HTML pour fonctionner en mode standard ou quasi-standard

Il y a des problèmes connus avec les méthodes jQuery qui ne fonctionnent pas correctement lorsqu'un navigateur affiche une page HTML en mode quirks. Lorsque vous utilisez jQuery, assurez-vous que le navigateur interprète le code HTML en mode standard ou presque en utilisant un doctype valide..

Pour garantir le bon fonctionnement, les exemples de code de ce livre utilisent le doctype HTML 5..

 

En attendant que le DOM soit prêt

jQuery déclenche un événement personnalisé nommé prêt lorsque le DOM est chargé et disponible pour la manipulation. Le code manipulant le DOM peut être exécuté dans un gestionnaire pour cet événement. Ceci est un motif commun vu avec l'utilisation de jQuery.

L'exemple suivant présente trois exemples codés de cet événement personnalisé utilisé.

        

N'oubliez pas que vous pouvez joindre autant de prêt() événements au document que vous souhaitez. Vous n'êtes pas limité à un seul. Ils sont exécutés dans l'ordre où ils ont été ajoutés.


Exécution du code jQuery lorsque la fenêtre du navigateur est complètement chargée

En règle générale, nous ne voulons pas attendre le window.onload un événement. C’est l’intérêt d’utiliser un événement personnalisé comme prêt() cela exécutera le code avant le chargement de la fenêtre, mais après que le DOM soit prêt à être parcouru et manipulé.

Cependant, nous voulons parfois attendre. Alors que la coutume prêt() event est idéal pour exécuter du code une fois que le DOM est disponible, nous pouvons également utiliser jQuery pour exécuter du code une fois que la page Web complète (y compris tous les actifs) est complètement chargée.

Cela peut être fait en attachant un gestionnaire d’événements load à la la fenêtre objet. jQuery fournit le charge() méthode d'événement qui peut être utilisée pour appeler une fonction une fois la fenêtre complètement chargée. Ci-dessous, je donne un exemple de la charge() méthode d'événement utilisée.

        

Inclure tous les fichiers CSS avant d'inclure jQuery

À partir de jQuery 1.3, la bibliothèque ne garantit plus que tous les fichiers CSS sont chargés avant de lancer le programme personnalisé. prêt() un événement. En raison de cette modification dans jQuery 1.3, vous devez toujours inclure tous les fichiers CSS avant tout code jQuery. Cela garantira que le navigateur a analysé le CSS avant de passer à JavaScript inclus plus tard dans le document HTML. Bien entendu, les images référencées via CSS peuvent être téléchargées ou non, le navigateur analysant le code JavaScript..


Utiliser une version hébergée de jQuery

Lors de l'intégration de jQuery dans une page Web, la plupart des gens choisissent de télécharger le code source et de le lier à partir d'un domaine / hôte personnel. Cependant, il existe d'autres options qui impliquent que quelqu'un d'autre héberge le code jQuery pour vous..

Google héberge plusieurs versions du code source jQuery dans l'intention de l'utiliser. C'est vraiment très pratique. Dans l'exemple de code ci-dessous, j'utilise un

Google héberge également plusieurs versions précédentes du code source de jQuery et, pour chaque version, des variantes minifiées et non minifiées sont fournies. Je recommande d'utiliser la variante non minifiée au cours du développement, car les erreurs de débogage sont toujours plus faciles lorsque vous utilisez du code non minifié..

L’utilisation d’une version de jQuery hébergée par Google réside dans le fait qu’elle est fiable, rapide et potentiellement mise en cache..


Exécution du code jQuery lorsque DOM est analysé sans utiliser Ready ()

La douane prêt() l'événement n'est pas entièrement nécessaire. Si votre code JavaScript n'affecte pas le DOM, vous pouvez l'inclure n'importe où dans le document HTML. Cela signifie que vous pouvez éviter le prêt() événement tout à fait si votre code JavaScript ne dépend pas de l'intégrité du DOM.

De nos jours, la plupart des scripts JavaScript, notamment le code jQuery, impliquent de manipuler le DOM. Cela signifie que le DOM doit être entièrement analysé par le navigateur pour que vous puissiez l'exploiter. Ce fait est la raison pour laquelle les développeurs ont été bloqués sur le window.onload montagnes russes pour quelques années maintenant.

Pour éviter d'utiliser le prêt() événement pour le code qui fonctionne sur le DOM, vous pouvez simplement placer votre code dans un document HTML avant la fermeture élément. Cela garantit que le DOM est complètement chargé, tout simplement parce que le navigateur analysera le document de haut en bas. Si vous placez votre code JavaScript dans le document après les éléments DOM qu’il manipule, il n’est pas nécessaire d’utiliser le prêt() un événement.

Dans l'exemple ci-dessous, j'ai oublié l'utilisation de prêt() en plaçant simplement mon script avant la fermeture du corps du document. C’est la technique que j’utilise tout au long de ce livre et sur la majorité des sites que je construis..

    

Salut, je suis le DOM! Script loin!

Si je devais placer le


Briser la chaîne avec des méthodes destructives

Comme mentionné précédemment, toutes les méthodes jQuery ne maintiennent pas la chaîne. Des méthodes comme  texte() peut être chaîné lorsqu'il est utilisé pour définir le nœud de texte d'un élément. toutefois, texte() rompt réellement la chaîne lorsqu'elle est utilisée pour obtenir le nœud de texte contenu dans un élément.

Dans l'exemple ci-dessous, texte() est utilisé pour définir puis obtenir le texte contenu dans le

 élément.

        

Obtenir le texte contenu dans un élément en utilisant texte() est un bon exemple d'une chaîne brisée car la méthode renverra une chaîne contenant le nœud de texte, mais pas le wrapper jQuery.

Il n’est donc pas surprenant que si une méthode jQuery ne renvoie pas le jeu d’encapsuleurs jQuery, la chaîne en est rompue. Cette méthode est considérée comme destructive.


Utilisation de méthodes jQuery destructrices et sortie de la destruction à l'aide de End ()

Les méthodes jQuery qui modifient le wrapper jQuery d'origine sélectionné sont considérées comme destructives. La raison en est qu'ils ne conservent pas l'état d'origine du groupe d'encapsuleurs. Ne pas s'inquiéter; rien n'est vraiment détruit ou enlevé. Au lieu de cela, l'ancien ensemble de wrapper est attaché à un nouvel ensemble.

Cependant, le plaisir de chaîner ne doit pas nécessairement s'arrêter une fois le jeu enveloppé d'origine modifié. En utilisant le fin() méthode, vous pouvez annuler toutes les modifications destructrices apportées au jeu d’emballages d’origine. Examiner l'utilisation de la fin() méthode dans l'exemple suivant pour comprendre comment opérer dans et hors des éléments DOM.

     

Aspects de la fonction jQuery

La fonction jQuery a plusieurs facettes. Nous pouvons lui transmettre différentes valeurs et formations de chaînes qu'il peut ensuite utiliser pour exécuter des fonctions uniques. Voici plusieurs utilisations de la fonction jQuery:

  • Sélectionnez des éléments du DOM à l'aide d'expressions CSS et d'expressions jQuery personnalisées, ainsi que de la sélection d'éléments à l'aide de références DOM: jQuery ('p> a') ou jQuery (': premier') et jQuery (document.body)
  • Créez du HTML à la volée en passant des structures de chaîne HTML ou des méthodes DOM créant des éléments DOM: jQuery ('
    ')
    ou jQuery (document.createElement ('div'))
  • Un raccourci pour le prêt() événement en passant une fonction à la fonction jQuery: jQuery (function ($) / * Raccourci pour ready () * /)

Chacune de ces utilisations est détaillée dans l'exemple de code ci-dessous..

       

Grokking lorsque le mot-clé correspondant aux éléments DOM

Lors de l'attachement d'événements à des éléments DOM contenus dans un ensemble d'encapsuleurs, le mot cléce peut être utilisé pour faire référence à l'élément DOM actuel appelant l'événement. L’exemple suivant contient du code jQuery qui joindra un message personnalisé. mouseenter événement à chacun élément dans la page. Le JavaScript natif passer la souris L'événement se déclenche lorsque le curseur entre ou sort d'un élément enfant, alors que celui de jQuery mouseenter ne fait pas.

    jQuery.com jQuery.com jQuery.com    

À l'intérieur de la fonction anonyme qui est transmise à la mouseenter () méthode, nous utilisons le mot clé ce se référer au courant élément. Chaque fois que la souris touche le texte "jQuery.com", le navigateur alertera quel élément a été survolé en identifiant son identifiant valeur d'attribut.

Dans l'exemple précédent, il est également possible de prendre la ce référencez-le et transmettez-le à la fonction jQuery afin que l'élément DOM soit encapsulé avec la fonctionnalité jQuery.

Donc au lieu de cela:

 // Accède à l'attribut ID de l'élément DOM. alerte (this.id);

Nous aurions pu faire ceci:

 // Enveloppe l'élément DOM avec un objet jQuery, // et utilise ensuite attr () pour accéder à la valeur de l'ID. alert ($ (this) .attr ('id'));

Cela est possible car la fonction jQuery prend non seulement des expressions de sélecteur, mais également des références à des éléments DOM. Dans le code, ce est une référence à un élément DOM.

La raison pour laquelle vous pouvez vouloir envelopper la fonctionnalité jQuery autour d'un élément DOM doit être évidente. Cela vous donne la possibilité d’utiliser le chaînage jQuery, si vous en avez besoin..

Itérer sur un ensemble d'éléments contenus dans l'ensemble d'encapsuleurs jQuery est un peu similaire au concept que nous venons de décrire. En utilisant le jQuery chaque() méthode, nous pouvons parcourir chaque élément DOM contenu dans un ensemble de wrapper. Cela permet d’accéder à chaque élément DOM individuellement, via l’utilisation de la ce mot-clé.

En nous basant sur le balisage de l'exemple précédent, nous pouvons sélectionner tous éléments dans la page et utiliser le chaque() méthode pour parcourir chaque élément dans l’ensemble de wrapper, accédant à sa identifiant attribut. Voici un exemple.

   jQuery.com jQuery.com jQuery.com    

Si vous deviez charger le code HTML dans un navigateur, celui-ci vous avertirait du identifiant valeur de chaque élément dans la page. Puisqu'il y a trois éléments de la page, vous obtenez trois itérations via le chaque() méthode et trois fenêtres d'alerte.


Extraire des éléments d'un ensemble d'encapsuleurs, en les utilisant directement sans jQuery

Le fait d’envelopper la fonctionnalité jQuery autour d’un élément HTML ne signifie pas que vous perdez l’accès à l’élément DOM lui-même. Vous pouvez toujours extraire un élément du jeu d'encapsuleurs et l'utiliser sur cet élément via JavaScript. Par exemple, dans le code ci-dessous, je mets l’attribut title de la élément dans la page HTML en manipulant la propriété title native du Élément DOM.

    jQuery.com    

Comme démontré, jQuery fournit le pratique obtenir() méthode d'accès aux éléments DOM à un index spécifique du groupe d'encapsuleurs.

Mais il y a une autre option ici. Vous pouvez éviter d'utiliser le obtenir() méthode en utilisant simplement la notation de tableau entre crochets sur l’objet jQuery lui-même. Dans le contexte de notre exemple de code précédent:

Ce code:

 $ ('a'). get (0) .title = 'jQuery.com';

Pourrait devenir ceci:

 $ ('a') [0] .title = 'jQuery.com';

Les deux autorisent l'accès à l'élément DOM réel. Personnellement, je préfère la notation entre crochets. Il est plus rapide car il utilise du JavaScript natif pour récupérer l'élément d'un tableau au lieu de le transmettre à une méthode.

Cependant, le obtenir() La méthode fournit une solution astucieuse pour placer tous les éléments DOM dans un tableau natif. En appelant simplement le obtenir() méthode sans lui transmettre un paramètre d'index, la méthode renverra tous les éléments DOM du wrapper défini dans un tableau JavaScript natif.

Pour démontrer, prenons obtenir() pour un essai routier. Dans le code ci-dessous, je place tous les éléments dans un tableau. J'utilise ensuite le tableau pour accéder à la propriété title de la troisième Objet DOM sur la page.

    jQuery.com jQuery.com jQuery.com    

Remarques: En utilisant obtenir() mettra fin à l'enchaînement de jQuery. Il va prendre le jeu d'encapsuleurs et le changer en un simple tableau d'éléments DOM qui ne sont plus encapsulés avec la fonctionnalité jQuery. Par conséquent, en utilisant le .fin() la méthode ne peut pas restaurer le chaînage après .obtenir().


Vérification pour voir si l'ensemble d'emballage est vide

Avant de commencer à utiliser un ensemble d'encapsuleurs, il est logique de vérifier que vous avez bien sélectionné quelque chose. La solution la plus simple consiste à utiliser un si instruction pour vérifier si le wrapper set contient des éléments DOM.

    jQuery    

La vérité de l'affaire est ce qui précède si les instructions ne sont pas totalement nécessaires, car jQuery échouera silencieusement si aucun élément n'est trouvé. Cependant, chaque méthode chaînée à un ensemble de wrapper vide est toujours invoquée. Donc, alors que nous pourrions réellement renoncer à l'utilisation de la si déclarations, c’est probablement une bonne règle empirique de les utiliser. L'appel de méthodes sur un ensemble de wrapper vide peut potentiellement entraîner un traitement inutile, ainsi que des résultats indésirables, si les méthodes renvoient des valeurs autres que celle du set de wrapper et que ces valeurs sont prises en compte.


Créer un alias en renommant l'objet jQuery lui-même

jQuery fournit le pas de conflit() méthode qui a plusieurs utilisations, à savoir la capacité de remplacer $ avec un autre alias. Cela peut être utile de trois manières: Il peut renoncer à l’utilisation de la $ vous connecter à une autre bibliothèque, éviter les conflits potentiels et permettre de personnaliser l'espace de nom / alias de l'objet jQuery.

Par exemple, supposons que vous construisez une application Web pour la société XYZ. Il peut être intéressant de personnaliser jQuery de manière à ne plus avoir à utiliser jQuery ('div'). show () ou $ ('div'). show () vous pourriez utiliser XYZ ('div'). Show () au lieu.

    
Syncfusion., Inc.

Remarques:En passant le pas de conflit() Si vous utilisez une valeur booléenne true, vous pouvez complètement annuler ce que jQuery a introduit dans la page Web. Cela ne devrait être utilisé que dans des cas extrêmes, car cela causera plus que probablement des problèmes avec les plugins jQuery.


Utilisation de .each () quand une itération implicite n’est pas suffisante

Si tout va bien, il est évident que si vous avez une page HTML (exemple ci-dessous) avec trois

éléments, l'instruction jQuery suivante sélectionnera les trois éléments de la page, itérera sur les trois éléments (itération implicite) et insérera le texte "Je suis un div" dans les trois
éléments.

    

Ceci est considéré comme une itération implicite car le code jQuery suppose que vous souhaitez manipuler les trois éléments, ce qui nécessite une itération sur les éléments sélectionnés et la définition de la valeur du nœud de texte de chacun.

avec le texte "je suis un div." Lorsque cela est fait par défaut, on parle d'itération implicite.

C'est plutôt pratique. Dans la plupart des cas, la majorité des méthodes jQuery appliquent une itération implicite. Cependant, d'autres méthodes ne s'appliqueront qu'au premier élément du groupe d'encapsuleurs. Par exemple, la méthode jQuery attr () n'accédera qu'au premier élément du groupe d'encapsuleurs lorsqu'il est utilisé pour obtenir une valeur d'attribut.

Remarques:Lorsque vous utilisez le attr () méthode pour définir un attribut, jQuery appliquera une itération implicite pour définir l’attribut et sa valeur sur tous les éléments du jeu d’encapsuleurs.

Dans le code ci-dessous, le wrapper set contient tout

éléments de la page, mais le attr () méthode ne renvoie que le identifiant valeur du premier élément contenu dans le wrapper.

    
Je suis une div
Je suis une div
Je suis une div

Pour des raisons de démonstration, supposons que votre objectif est d’obtenir le identifiant valeur d'attribut pour chaque élément de la page. Vous pouvez écrire trois instructions jQuery distinctes accédant à chaque

éléments identifiant valeur d'attribut. Si nous devions faire cela, cela pourrait ressembler à ceci:

 $ ('# div1'). attr ('id'); $ ('# div2'). attr ('id'); $ ('# div3'). attr ('id'); // ou var $ divs = $ ('div'); // Requête mise en cache $ divs.eq (0) .attr ('id'); // Commencez par 0 au lieu de 1 $ divs.eq (1) .attr ('id'); $ divs.eq (2) .attr ('id');

Cela semble un peu verbeux, non? Ce ne serait pas bien si nous pouvions boucler sur le wrapper et extraire simplement le identifiant attribuer la valeur de chacun des

éléments? En utilisant le $ (). chaque () méthode, nous invoquons une autre série d’itérations lorsque notre ensemble d’encapsuleurs nécessite une itération explicite pour gérer plusieurs éléments.

Dans l'exemple de code ci-dessous, j'utilise le $ (). chaque () méthode pour boucler sur le groupe de wrapper, accéder à chaque élément du jeu, puis extraire son identifiant valeur d'attribut.

    
div1
div2
div3

Imaginez les possibilités qui s'offrent à vous avec la capacité d'imposer l'itération à tout moment.

Remarques: jQuery fournit également un $ .each fonction, à ne pas confondre avec le $ () chaque méthode, utilisée spécifiquement pour parcourir un ensemble d'encapsuleurs jQuery. le $ .each Cette méthode peut en fait être utilisée pour parcourir un ancien tableau ou objet JavaScript. C'est essentiellement une substitution pour les boucles JavaScript natives.


Éléments de l'ensemble d'encapsuleurs jQuery renvoyés dans l'ordre du document

Le moteur de sélecteur renverra les résultats dans l'ordre du document, par opposition à l'ordre dans lequel les sélecteurs ont été passés. L'ensemble d'encapsuleurs est rempli avec les éléments sélectionnés en fonction de l'ordre dans lequel chaque élément apparaît dans le document, de haut en bas..

    

h1

h2

h3


Détermination du contexte utilisé par la fonction jQuery

Le contexte par défaut utilisé par la fonction jQuery lors de la sélection d’éléments DOM est l’élément document (par exemple. $ ('a', document)). Cela signifie que si vous ne fournissez pas la fonction jQuery (par exemple,. jQuery ()) avec un deuxième paramètre à utiliser comme contexte pour la requête DOM, le contexte par défaut utilisé est l'élément document, plus communément appelé .

Il est possible de déterminer le contexte dans lequel la fonction jQuery effectue une requête DOM en utilisant le le contexte propriété. Ci-dessous, je montre deux exemples codés d'extraction de la valeur de la propriété context.

    
jQuery

Création d'une structure DOM complète, y compris des événements DOM, dans une chaîne unique

En exploitant les méthodes de chaînage et jQuery, vous pouvez créer non seulement un seul élément DOM, mais également des structures DOM complètes. Ci-dessous, je crée une liste non ordonnée de liens jQuery que j’ajoute ensuite au DOM..