C'è un modo per cambiare i parametri degli eventi in jQuery?
-
26-09-2019 - |
Domanda
Voglio essere in grado di modificare i parametri che vengono passati nei del selezionabili inizio dell'evento, in modo da poter praticamente permettere che il mio all'utente di utilizzare il selezionabile effetto jQuery UI senza dover tenere premuto il tasto CTRL.
JS
$(function() {
$( "#selectable" ).bind("mousedown", function(event, ui) {
var result = $( "#select-result" ).empty();
event.metaKey = event.ctrlKey = true;
});
$( "#selectable" ).selectable();
});
Ho un violino con quello che sto cercando di realizzare qui:
http://jsfiddle.net/josephbulger/ZfevM/
Il problema che sto avendo, è che quando ho impostato i parametri della manifestazione nel metodo di avvio, il metodo di arresto non è vedere i cambiamenti che sto facendo.
C'è un modo per ottenere quello che sto cercando di fare?
Soluzione
Non è possibile impostare le proprietà qui no ... perché è un diverso oggetto event
nel metodo stop
. È possibile impostare alcune variabili in un ambito più elevato ( come questo ), ma nessuno che persisterà su l'oggetto event
. Non è che si tratta di "compensazione" loro realmente, è solo una zecca nuovo oggetto.
Per rendere la si comportano come se selezionabile Ctrl viene tenuto premuto, si legano alla manifestazione mousedown
utilizza anticipo e impostare la proprietà .metaKey
su quel event
per true
, in questo modo:
$("#selectable").bind("mousedown", function(e) {
e.metaKey = true;
}).selectable();
È possibile verificare il lavoro svolto qui , ricordatevi di trovare prima chiamando .selectable()
, dal momento che i gestori di eventi vengono eseguiti nell'ordine bound.
Altri suggerimenti
Ho aggiornato il codice. Date un'occhiata a questo URL.
http://jsfiddle.net/phoenix_suresh/7f6j5/
attributo ID Nel frattempo, ho aggiunto a
Dopo aver trovato questa risposta ho notato che è possibile utilizzare la proprietà originalEvent
sull'oggetto event
restituito nel gestore di eventi start
selezionabili per impostare la proprietà ctrlKey
su true.
In questo modo:
$("#selectable").selectable({
start: function (event, ui) {
event.originalEvent.ctrlKey = true;
}
});