Existe-t-il un moyen de modifier les parameters d’événement dans jQuery?

Je souhaite pouvoir modifier les parameters transmis à l’événement de démarrage de la sélection, afin de permettre à mon utilisateur d’utiliser l’effet jQuery UI sélectionnable sans devoir maintenir la touche CTRL enfoncée

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 j’essaye d’accomplir ici:

http://jsfiddle.net/josephbulger/ZfevM/

Le problème que j’ai, c’est que lorsque je définis les parameters de l’événement dans la méthode de démarrage, la méthode d’arrêt ne voit pas les modifications que je fais.

Y a-t-il un moyen d’accomplir ce que j’essaie de faire?

Vous ne pouvez pas définir les propriétés ici non … car il s’agit d’un object event différent dans la méthode stop . Vous pouvez définir certaines variables dans une scope plus élevée ( comme celle-ci ), mais aucune d’entre elles ne persistera dans l’object event . Ce n’est pas que cela les “efface” vraiment, c’est juste un nouvel object flambant neuf.


Pour que le comportement sélectionnable se comporte comme si vous mousedown la touche Ctrl enfoncée, liez-vous à l’ mousedown événement mousedown et définissez la propriété .metaKey sur cet event sur true , comme .metaKey :

 $("#selectable").bind("mousedown", function(e) { e.metaKey = true; }).selectable(); 

Vous pouvez le tester ici , n’oubliez pas de le trouver avant d’ appeler .selectable() , car les gestionnaires d’événements sont exécutés dans l’ordre lié.

J’ai mis à jour le code. Regardez cette URL.

http://jsfiddle.net/phoenix_suresh/7f6j5/

En attendant, j’ai ajouté l’atsortingbut ID à

  • éléments afin que vous puissiez avoir plus de contrôle sur elle.
  • Après avoir trouvé cette réponse, j’ai remarqué que vous pouvez utiliser la propriété originalEvent sur l’object event renvoyé dans le gestionnaire d’événements start sélectionnable pour définir la propriété ctrlKey sur true.

    Ainsi:

     $("#selectable").selectable({ start: function (event, ui) { event.originalEvent.ctrlKey = true; } }); 

    Travail du violon