Liaison d'événement jQuery et délégué examples_jquery
Les exemples de cet article décrivent la liaison et la délégation d'événements jQuery. Partagez-le avec tout le monde pour votre référence. La méthode spécifique est la suivante :
La liaison et la délégation d'événements JQuery peuvent être implémentées à l'aide de diverses méthodes, on() , bind() , live() , délégué() et one().
Parfois, nous pouvons lier un événement comme celui-ci :
alert("Déclencheur après clic");
});
Nous pouvons implémenter la liaison d'événement ci-dessus de différentes manières :
1. sur()
$("p").on("clic", function(){
alert( $(this).text() );
});
//Il y a des paramètres de données
function myHandler (événement) {
alert(event.data.foo);
}
$("p").on("click", {foo: "bar"}, myHandler)
Correspondant à on() est off(), qui est utilisé pour supprimer la liaison d'événement :
// code pour gérer une sorte d'événement
};
// ... maintenant foo sera appelé lorsque les paragraphes seront cliqués ...
$("body").on("click", "p", foo
);
// ... foo ne sera plus appelé
$("body").off("click", "p", foo);
off() : supprime la liaison par on()
one() : ne se lie qu'une seule fois.
2. lier()
Paramètres :
(type,[données],fonction(eventObject))
type : une chaîne contenant un ou plusieurs types d'événements, avec plusieurs événements séparés par des espaces. Par exemple, « cliquez » ou « soumettre », ou un nom d'événement personnalisé.
data : objet de données supplémentaire transmis à l'objet événement en tant que valeur d'attribut event.data
fn : La fonction de gestionnaire liée à l'événement de chaque élément correspondant
(type,[données],faux)
type : une chaîne contenant un ou plusieurs types d'événements, avec plusieurs événements séparés par des espaces. Par exemple, « cliquez » ou « soumettre », ou un nom d'événement personnalisé.
data : objet de données supplémentaire transmis à l'objet événement en tant que valeur de l'attribut event.data
false : définir le troisième paramètre sur false désactive l'action par défaut.
Lier plusieurs types d'événements en même temps :
$(this).toggleClass('entré');
});
Lier plusieurs types/gestionnaires d'événements simultanément :
click:function(){$("p").slideToggle();},
survol de la souris:function(){$("body").css("background-color","red");},
mouseout:function(){$("body").css("background-color","#FFFFFF");}
});
Vous pouvez transmettre des données supplémentaires avant la gestion des événements.
alert(event.data.foo);
}
$("p").bind("click", {foo: "bar"}, handler)
Annulez le comportement par défaut et empêchez l'événement de se propager en renvoyant false.
Problèmes de liaison
S'il y a 10 colonnes et 500 lignes dans le tableau auxquelles les événements de clic sont liés, alors la recherche et le parcours de 5 000 cellules entraîneront un ralentissement significatif de la vitesse d'exécution du script, et la sauvegarde de 5 000 éléments td et des gestionnaires d'événements correspondants prendra également beaucoup de mémoire (comme si tout le monde se tenait physiquement à la porte en attendant une livraison).
Sur la base de l'exemple précédent, si nous voulons implémenter une application simple d'album photo, chaque page n'affiche que des vignettes de 50 photos (50 cellules), et l'utilisateur clique sur le lien « Page x » (ou « Page suivante »). chargez dynamiquement 50 autres photos depuis le serveur via Ajax. Dans ce cas, il semble que la liaison d'événements pour 50 cellules à l'aide de la méthode .bind() soit à nouveau acceptable.
Ce n’est pas le cas. L'utilisation de la méthode .bind() ne liera les événements de clic qu'à 50 cellules de la première page. Les cellules des pages suivantes chargées dynamiquement n'auront pas cet événement de clic. En d'autres termes, .bind() ne peut lier des événements qu'à des éléments qui existent déjà au moment de son appel, et ne peut pas lier des événements à des éléments qui seront ajoutés ultérieurement (de la même manière que les nouveaux employés ne peuvent pas recevoir de livraison express).
La délégation d'événements peut résoudre les deux problèmes ci-dessus. Spécifique au code, utilisez simplement la méthode .live() nouvellement ajoutée dans jQuery 1.3 au lieu de la méthode .bind() :
La méthode .live() ici liera l'événement click à l'objet $(document) (mais cela ne peut pas être reflété dans le code. C'est également une raison importante pour laquelle la méthode .live() a été critiquée. Nous en discuterons en détail plus tard. ), et vous n'avez besoin de lier $(document) qu'une seule fois (pas 50 fois, encore moins 5 000 fois), et vous pouvez ensuite gérer l'événement de clic de la cellule photo chargée dynamiquement suivante. Lors de la réception d'un événement, l'objet $(document) vérifiera le type d'événement et la cible de l'événement. S'il s'agit d'un événement de clic et que la cible de l'événement est td, alors le gestionnaire qui lui est délégué sera exécuté.
unbind() : supprime la liaison effectuée par bind.
3. en direct()
Jusqu'à présent, tout semble parfait. Malheureusement, ce n'est pas le cas. La méthode .live() n’étant pas parfaite, elle présente les défauts majeurs suivants :
La fonction $() trouvera tous les éléments td dans la page actuelle et créera des objets jQuery. Cependant, cette collection d'éléments td n'est pas utilisée lors de la confirmation de la cible de l'événement. Au lieu de cela, une expression de sélection est utilisée pour comparer avec event.target ou son ancêtre. éléments, donc la génération de cet objet jQuery entraînera une surcharge inutile
Par défaut, les événements sont liés à l'élément $(document). Si la structure imbriquée du DOM est très profonde, les événements qui se propagent à travers un grand nombre d'éléments ancêtres entraîneront des pertes de performances
;
Il ne peut être placé qu'après l'élément directement sélectionné et ne peut pas être utilisé après la méthode de traversée DOM consécutive, c'est-à-dire que $("#info_table td").live... peut être utilisé, mais $("#info_table") .find("td" ).live...Non;
Collectez des éléments td et créez des objets jQuery, mais l'opération réelle est l'objet $(document), ce qui est déroutant.
La solution
Pour éviter de générer des objets jQuery inutiles, vous pouvez utiliser un hack appelé « délégation anticipée », qui consiste à appeler .live() en dehors de la méthode $(document).ready() :
$("#info_table td").live("click",function(){/*Afficher plus d'informations*/});
})(jQuery);
Ici, (function($){...})(jQuery) est une "fonction anonyme qui est exécutée immédiatement", formant une fermeture pour éviter les conflits de noms. Dans la fonction anonyme, le paramètre $ fait référence à l'objet jQuery. Cette fonction anonyme n'attend pas que le DOM soit prêt avant de s'exécuter. Notez que lors de l'utilisation de ce hack, le script doit être lié et/ou exécuté dans l'élément head de la page. La raison du choix de ce timing est que l'élément de document est disponible à ce moment-là, et que l'intégralité du DOM est loin d'être générée ; si le script est placé devant la balise body de fermeture, cela n'a aucun sens, car le DOM est entièrement généré ; disponible à ce moment-là.
Afin d'éviter les pertes de performances causées par le bouillonnement d'événements, jQuery prend en charge l'utilisation d'un paramètre de contexte lors de l'utilisation de la méthode .live() à partir de la version 1.4 :
De cette façon, le « fiduciaire » passe du $(document) par défaut à $("#info_table")[0], sauvant ainsi le voyage bouillonnant. Cependant, le paramètre de contexte utilisé avec .live() doit être un élément DOM distinct, donc l'objet de contexte est spécifié ici en utilisant $("#info_table")[0], qui est obtenu à l'aide de l'opérateur d'index de tableau Un élément DOM.
4. délégué()
Comme mentionné précédemment, afin de briser les limitations de la méthode unique .bind() et d'implémenter la délégation d'événements, jQuery 1.3 a introduit la méthode .live(). Plus tard, afin de résoudre le problème d'une "chaîne de propagation d'événements" trop longue, jQuery 1.4 a pris en charge la spécification d'objets de contexte pour la méthode .live(). Afin de résoudre le problème de la génération inutile de collections d'éléments, jQuery 1.4.2 a simplement introduit une nouvelle méthode.delegate().
En utilisant .delegate(), l’exemple précédent peut s’écrire ainsi :
L'utilisation de .delegate() présente les avantages suivants (ou résout les problèmes suivants de la méthode .live()) :
Liez directement le sélecteur d'élément cible ("td"), l'événement ("clic") et le gestionnaire à la "dragée" $("#info_table"), sans collection supplémentaire d'éléments, sans chemin de propagation d'événement raccourci et sans sémantique claire
On voit que la méthode .delegate() est une solution relativement parfaite. Mais lorsque la structure du DOM est simple, .live() peut également être utilisée.
Astuce : lors de l'utilisation de la délégation d'événements, si d'autres gestionnaires d'événements enregistrés sur l'élément cible utilisent .stopPropagation() pour empêcher la propagation des événements, la délégation d'événements deviendra invalide.
undelegate() : Supprimer la liaison du délégué

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MetaMask (également appelé Little Fox Wallet en chinois) est un logiciel de portefeuille de cryptage gratuit et bien accueilli. Actuellement, BTCC prend en charge la liaison au portefeuille MetaMask. Après la liaison, vous pouvez utiliser le portefeuille MetaMask pour vous connecter rapidement, stocker de la valeur, acheter des pièces, etc., et vous pouvez également obtenir un bonus d'essai de 20 USDT pour la première liaison. Dans le didacticiel du portefeuille BTCCMetaMask, nous présenterons en détail comment enregistrer et utiliser MetaMask, ainsi que comment lier et utiliser le portefeuille Little Fox dans BTCC. Qu'est-ce que le portefeuille MetaMask ? Avec plus de 30 millions d’utilisateurs, MetaMask Little Fox Wallet est aujourd’hui l’un des portefeuilles de crypto-monnaie les plus populaires. Son utilisation est gratuite et peut être installée sur le réseau en tant qu'extension

À l’ère actuelle d’explosion de l’information, la construction d’une marque personnelle et d’une image d’entreprise est devenue de plus en plus importante. En tant que principale plateforme de partage de vie dans le domaine de la mode en Chine, Xiaohongshu a attiré l'attention et la participation d'un grand nombre d'utilisateurs. Pour les utilisateurs qui souhaitent étendre leur influence et améliorer l’efficacité de la diffusion du contenu, les sous-comptes contraignants sont devenus un moyen efficace. Alors, comment Xiaohongshu lie-t-il un sous-compte ? Comment vérifier si le compte est normal ? Cet article répondra à ces questions pour vous en détail. 1. Comment lier un sous-compte sur Xiaohongshu ? 1. Connectez-vous à votre compte principal : Tout d'abord, vous devez vous connecter à votre compte principal Xiaohongshu. 2. Ouvrez le menu des paramètres : cliquez sur « Moi » dans le coin supérieur droit, puis sélectionnez « Paramètres ». 3. Accédez à la gestion du compte : dans le menu des paramètres, recherchez l'option "Gestion du compte" ou "Assistant de compte" et cliquez sur

1. Ouvrez Toutiao. 2. Cliquez sur Mon dans le coin inférieur droit. 3. Cliquez sur [Paramètres système]. 4. Cliquez sur [Paramètres de compte et de confidentialité]. 5. Cliquez sur le bouton sur le côté droit de [Douyin] pour lier Douyin.

L'application Cainiao est une plate-forme qui peut vous fournir diverses informations logistiques. Les fonctions ici sont très puissantes et faciles à utiliser. Si vous rencontrez des problèmes liés à la logistique, ils peuvent être résolus ici. Quoi qu'il en soit, cela peut vous apporter une solution. -Le service d'arrêt peut tout résoudre à temps. La vérification de la livraison express, la récupération de la livraison express, l'envoi de la livraison express, etc. se font sans aucun problème. Nous avons coopéré avec diverses plateformes et toutes les informations peuvent être interrogées. Il arrivera que les marchandises achetées sur Pinduoduo ne puissent pas afficher les informations logistiques. En fait, vous devez lier manuellement Pinduoduo pour y parvenir. Les méthodes spécifiques ont été triées ci-dessous, et tout le monde peut y jeter un œil. Comment lier Cainiao au compte Pinduoduo : 1. Ouvrez l'application Cainiao et accédez à la page principale.

Comment utiliser la méthode de requête PUT dans jQuery ? Dans jQuery, la méthode d'envoi d'une requête PUT est similaire à l'envoi d'autres types de requêtes, mais vous devez faire attention à certains détails et paramètres. Les requêtes PUT sont généralement utilisées pour mettre à jour des ressources, comme la mise à jour de données dans une base de données ou la mise à jour de fichiers sur le serveur. Ce qui suit est un exemple de code spécifique utilisant la méthode de requête PUT dans jQuery. Tout d'abord, assurez-vous d'inclure le fichier de la bibliothèque jQuery, puis vous pourrez envoyer une requête PUT via : $.ajax({u

Le dernier modèle de voiture Mi su7 lancé par Xiaomi a dominé diverses listes de recherche populaires. De nombreux utilisateurs qui ont besoin d'acheter une voiture ont choisi le modèle de voiture Xiaomi su7 pour l'achat. Alors, comment utilisez-vous votre application de voiture Xiaomi pour lier la voiture après la sélection. monter la voiture ? Si vous décidez d'utiliser une borne de recharge domestique pour recharger, ce guide didacticiel vous donnera une introduction détaillée, j'espère qu'il pourra vous aider. Tout d'abord, nous ouvrons l'application mobile Xiaomi, cliquons sur le bouton Mon dans le coin inférieur droit, puis dans l'interface Mon, vous pouvez voir l'option de pile de chargement à domicile. Après avoir entré la page qui lie la pile de chargement, cliquez sur le code de numérisation. ci-dessous et scannez le code QR sur la pile de chargement. Le code QR peut être utilisé pour lier la pile de chargement à l'application.

Savez-vous comment lier Pinduoduo lorsque vous utilisez Cainiao Wrap ? La version officielle de l'application Cainiao Wrap ne synchronise pas automatiquement certaines informations logistiques de Pinduoduo sur cette plateforme. Il vous suffit de copier le numéro de commande ou de vérifier votre téléphone portable pour le voir. s'il y a des informations de livraison express. Bien entendu, tout cela doit être complété manuellement. Si vous souhaitez en savoir plus, venez jeter un œil auprès de l'éditeur. Comment lier l'application Cainiao à Pinduoduo 1. Ouvrez l'application Cainiao et cliquez sur « Guide du package » dans le coin supérieur gauche de la page principale. 2. Dans l'interface, il existe de nombreux sites Web d'achats et les comptes peuvent être liés. 3. Cliquez pour importer d'autres plateformes de commerce électronique. 4. Autorisation de l'utilisateur : cliquez sur Pinduoduo pour accéder à l'interface

L'incapacité de la Black Box à se lier à Steam peut être causée par des problèmes de réseau ou de version du logiciel. La petite boîte noire fournit des informations, notamment les prix des jeux sortis et à venir, les exigences et critiques de configuration de l'ordinateur, ainsi qu'une analyse approfondie du gameplay. En outre, il permet également aux utilisateurs de trouver les informations dont ils ont besoin via des appareils mobiles à tout moment et en tout lieu. Que faire si la petite boîte noire ne peut pas être liée à Steam 1. Confirmez l'état du réseau et assurez-vous que l'appareil est connecté à Internet. 2. Vérifiez la version de Little Black Box. Veuillez vous assurer que vous utilisez la dernière version du logiciel Little Black Box et essayez de lier votre compte Steam. 3. Pour vérifier les paramètres du compte Steam, veuillez vous connecter au compte Steam et vérifier si la fonction d'autorisation de liaison de logiciels tiers est activée dans les paramètres de confidentialité. 4. Contactez le service client officiel Si les étapes ci-dessus ne parviennent toujours pas à résoudre le problème, il est recommandé de contacter le service client officiel pour obtenir de l'aide.
