Est-il possible de modifier les paramètres d'événement dans jQuery?
-
26-09-2019 - |
Question
Je veux être en mesure de changer les paramètres qui sont passés, je peux essentiellement dans le cas de démarrage de l'sélectionnable permettre à mon utilisateur d'utiliser l'effet jQuery UI sélectionnable sans avoir à maintenir enfoncée la touche CTRL.
JS
$(function() {
$( "#selectable" ).bind("mousedown", function(event, ui) {
var result = $( "#select-result" ).empty();
event.metaKey = event.ctrlKey = true;
});
$( "#selectable" ).selectable();
});
J'ai un violon avec ce que je suis en train d'accomplir ici:
http://jsfiddle.net/josephbulger/ZfevM/
Le problème que je vais avoir, est que lorsque j'ai mis dans la méthode de démarrage des paramètres de l'événement, la méthode d'arrêt ne voit pas les changements que je fais.
Y at-il un moyen d'accomplir ce que je suis en train de faire?
La solution
Vous ne pouvez pas définir les propriétés ici non ... parce que c'est un différent objet event
dans la méthode stop
. Vous pouvez définir des variables à périmètre supérieur ( comme ça ), mais aucun qui persistera sur l'objet event
. Il est pas que ce soit les « compensation » vraiment, c'est juste une fessée marque nouvel objet.
Pour se comportent sélectionnable comme si Ctrl est maintenue enfoncée, se lient à l'événement mousedown
il utilise l'avance et définissez la propriété .metaKey
sur cette event
true
, comme ceci:
$("#selectable").bind("mousedown", function(e) {
e.metaKey = true;
}).selectable();
Vous pouvez le tester ici , souvenez-vous de trouver avant appelant .selectable()
, car les gestionnaires d'événements sont exécutés dans l'ordre lié.
Autres conseils
Je l'ai mis à jour le code. Jetez un oeil à cette URL.
http://jsfiddle.net/phoenix_suresh/7f6j5/
Pendant ce temps, je l'ai ajouté attribut ID à
Après avoir trouvé cette réponse que je remarque que vous pouvez utiliser la propriété originalEvent
sur l'objet event
retourné dans le gestionnaire d'événements start
sélectionnable pour définir la propriété ctrlKey
true.
comme ceci:
$("#selectable").selectable({
start: function (event, ui) {
event.originalEvent.ctrlKey = true;
}
});