Pouvez-vous définir l'événement.de données avec jquery déclencheur
Avec jQuery .on()
vous pouvez passer un paramètre facultatif pour définir les données d'événement. Pouvez-vous faire cela avec le déclenchement?
Vous devez vous connecter pour publier un commentaire.
Réponse Courte:
Peut trigger() transmettre des données à vos gestionnaires d'événements? Oui (comme paramètres supplémentaires)
Peut trigger() transmettre des données à l'événement.objet de données directement? Pas (seulement sur() ne ce)
Réponse Longue
La méthode trigger () n'5 choses principales.
Les numéros 3 et 5 sont les plus importants et pertinents pour vous. Puisque vous définissent implicitement l'api pour la gestion de cet événement, vous voulez être cohérent avec la façon dont vous déclencher des événements afin que les personnes qui utilisent votre code peut être cohérent avec la façon dont ils l'utilisent.
Exemple 1 Cohérence
Exemple 2 Voici l'exemple typique montrant à la fois trigger() et():
Donc n'oubliez pas.
.sur(): l'événement est de remonter les dom. faire quelques trucs, d'ajouter ou de l'utilisation de données d'événement et d'utiliser les très params qui déclenchent ajouté ou non.
Tangente: Si vous souhaitez définir des gestionnaires d'événements pour les éléments dynamiques qui peuvent être ajoutés ou supprimés de manière arbitraire, c'est très facile avec jQuery. Voir cette réponse: En jQuery, comment associer des événements à la dynamique des éléments html?
J'espère que je n'ai pas mal, mais voulez-vous dire en passant des données supplémentaires à l'
trigger
méthode?Et ailleurs...
Noter que si vous transmettez des données supplémentaires à
trigger
, votre premier paramètre de la fonction de rappel est toujours l'événement, vous êtes le déclenchement.La
app.Model
j'ai utilisé dans la parenthèse est l'objet qui devrait déclencher un événement et qui écoute également sur cet événement. Pensez à cela comme une sorte d'espace de noms. Vous pouvez toujours utiliserdocument
, tout DOM sélecteur ou même de l'objet que vous aimez, assurez-vous juste que les deuxtrigger
et laon
devez utiliser le même objet (qui est, DOM éléments qui sont supprimés à partir du DOM temporairement sont sujettes à l'erreur).Vous pouvez le faire de cette façon:-
Exemple
Vous pouvez passer de l'événement.données trop avec la même approche. Consultez cette Objet De L'Événement
e.data
est pas défini par le temps qu'il arrive à laon
gestionnaires.C'est l'approche que j'ai pris.
Je sais qu'une solution de contournement que nous pouvons utiliser pour cette
Ici est un démo
Oui. La documentation dit:
JQuery dans le site, vous pouvez voir la déclaration de la
trigger
fonction:.trigger( eventType [, extraParameters] )
La
extraParameters
doit être un tableau ou un objet unique et vous serez autorisé à obtenir ces objets avec des arguments[1+] (arguments[0] est égal à l'objet de l'événement).Donc, voici un exemple:
Autant que je sache, le même
dataObject
que vous avez défini avec l'original :sera également envoyé lorsque vous utilisez `$('selector').trigger('eventName').
vous pouvez également passer des paramètres (comme d'autres mentions dans les réponses), mais ces paramètres sont des arguments supplémentaires (vous aurez toujours la
dataObject
vous définissez dans le.on()
fonction).Il m'a fallu un certain temps pour comprendre la philosophie derrière tout cela. Un événement comprend deux entités: l'auditeur et le répartiteur. Le
event.data
champ est destiné à être utilisé par l'auditeur seulement. C'est un peu comme l'affectation d'un nom à un numéro de téléphone:Vous pourriez prendre le téléphone et d'attendre de l'autre côté pour vous dire qu'elle est votre Mère. Ou vous pouvez utiliser
event.data
pour joindre l'information supplémentaire pertinente à cet événement.La
$.trigger
et$.triggerHandler
méthodes sont appelées par le répartiteur côté d'un événement. C'est pourquoi ils ne vous permettent de spécifier leevent.data
. Au lieu de cela, vous pouvez utiliser leurextraParameters
argument.vous pouvez le faire de cette façon