Dans mon dernier code, j'ai un gestionnaire d'événements pour un Ma seule pseudo-solution consiste à définir temporairement une variable: p> Et puis, dans mon gestionnaire d'événements, effectuez uniquement la logique si le silence est faux. Le gestionnaire est toujours déclenché, mais la logique ne fonctionne pas. P> Est-ce que quelqu'un d'autre connaît de meilleures stratégies pour cela? P> p> Focus Code> sur un Textarea. Lorsque l'utilisateur clique sur le Textarea, ce gestionnaire d'événements est déclenché qui définit certains autres états DOM en fonction de la texture sélectionnée. Cependant, ailleurs dans mon programme, je souhaite définir programmation le code> code> du textarea sans déclencher ce gestionnaire d'événements. Je sais que le sackbone, par exemple, a un moyen de
silencieusement code> exécuter une action.
5 Réponses :
Vous pouvez temporairement Vous avez le scénario suivant où vous gérez l'événement de mise au point: P> UNBIND () CODE> L'événement, comme celui-ci:
$('#yourelement').unbind('focus');
$('#yourelement').focus();
$('#yourelement').bind('focus', focus_handler);
Si des événements émis sont émis lorsqu'un auditeur est non lié, il peut causer des boucles de récursivité. D'où le problème que je suis actuellement confronté à Bootstrap-DateTimeMepicker.
<input type="text" name="input" id="input" value="0"> <input type="text" name="input" id="input2" value="0"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script> <script> $(function() { $('#input').focus(function(a,b) { if (b) alert('forced'); }); $('#input').trigger('focus', jQuery.Event("focus")); }); </script> When b argument of the event handler is present, the event is triggered by invoking $('#input').trigger('focus', jQuery.Event("focus"));. So you can make you handler function execute depending on normal focus or forced focus.
Solution très élégante, j'aime ça!
Non documenté? Ceci est l'utilisation d'extraparamètres dans api.jquery.com/trigger . Pourquoi ne pas simplement passer true code> au lieu de bizarre
jquery.event ("Focus") code>?
Cela ne fonctionnera pas. Que se passe-t-il quand un événement de mise au point réel est-il d'une action d'utilisateur? Le gestionnaire n'est pas appelé.
dans jQuery, Ainsi, par exemple: P> déclencheur () code> peut prendre un espace de noms d'événement. Seuls les événements liés à cet espace de noms et comportement par défaut, seront déclenchés.
$('#yourelement').trigger('focus.anyOldNonsense');
Comme vous ne pouvez pas empêcher l'événement de se produire, vous avez besoin d'une sorte d'intermédiaire qui décide d'émettre ou non l'événement. Donc, vous auriez l'intermédiaire d'écouter pour tous les événements de concentration et vous devez dire que l'intermédiaire d'émettre de la réédition ou non. Ensuite, vous écouteriez directement cet intermédiaire plutôt que le nœud DOM. P>
<a href='javscript:void()' onClick="()=>myFunction(myParams)">click here</a> try this hack to set onClick functions with params without firing them on instantiation.
Qu'utilisez-vous pour lier des événements, JQuery?
J'utilise en fait Meteor Github.com/meteor/meteor pour ce projet particulier, alors j'étais principalement Vous êtes intéressé chez Vanilla JS Solutions, mais les jQuery sont bonnes aussi.