Gibt es eine Möglichkeit Ereignisparameter in jQuery zu ändern?
-
26-09-2019 - |
Frage
Ich mag die Parameter ändern können, die in die auswählbaren die übergeben werden Veranstaltung beginnen, so dass ich im Grunde meiner Benutzer den auswählbaren jQuery UI-Effekt zu verwenden erlauben kann, ohne die STRG-Taste gedrückt halten zu müssen.
JS
$(function() {
$( "#selectable" ).bind("mousedown", function(event, ui) {
var result = $( "#select-result" ).empty();
event.metaKey = event.ctrlKey = true;
});
$( "#selectable" ).selectable();
});
Ich habe eine Geige mit dem, was ich versuche, hier zu erreichen:
http://jsfiddle.net/josephbulger/ZfevM/
Das Problem, das ich bin, ist, dass, wenn ich die Veranstaltungs-Parameter in den Startverfahren eingestellt ist, wird die Stop-Methode der Änderungen nicht sehen, ich mache.
Gibt es eine Möglichkeit zu erreichen, was ich versuche zu tun?
Lösung
Sie können die Eigenschaften hier nicht nicht gesetzt ... weil es ein andere event
Objekt im stop
Verfahren. Sie können einige Variablen auf einem höheren Umfang eingestellt ( Beispiel ), aber keine, die fortbestehen auf das event
Objekt. Es ist nicht, dass es der „Lichtung“ sie wirklich, es ist nur ein ganz neues Objekt versohlt.
Um die auswählbaren verhalten, als ob Strg gedrückt gehalten wird, binden an die mousedown
Ereignis nutzt vor der Zeit und stellen Sie die .metaKey
Eigenschaft auf, dass event
true
, wie folgt aus:
$("#selectable").bind("mousedown", function(e) {
e.metaKey = true;
}).selectable();
Sie können es testen hier aus, denken Sie daran zu finden, bevor Aufruf .selectable()
, da gebunden Event-Handler ausgeführt werden in der Reihenfolge.
Andere Tipps
Ich habe den Code aktualisiert. Werfen Sie einen Blick auf diese URL.
http://jsfiddle.net/phoenix_suresh/7f6j5/
Inzwischen habe ich hinzugefügt ID-Attribut
Nachdem diese Antwort zu finden, bemerkte ich, dass Sie die originalEvent
Eigenschaft auf dem event
Objekt verwenden können, in dem auswählbaren start
Ereignishandler zurückgegeben die ctrlKey
Eigenschaft auf true zu setzen.
Wie so:
$("#selectable").selectable({
start: function (event, ui) {
event.originalEvent.ctrlKey = true;
}
});