¿Hay una manera de cambiar los parámetros de evento en jQuery?
-
26-09-2019 - |
Pregunta
Quiero ser capaz de cambiar los parámetros que se están pasando en la década de los seleccionables comenzar evento, así que básicamente puedo permitir que mi usuario utilizar el efecto seleccionable jQuery UI sin tener que mantener pulsada la tecla CTRL.
JS
$(function() {
$( "#selectable" ).bind("mousedown", function(event, ui) {
var result = $( "#select-result" ).empty();
event.metaKey = event.ctrlKey = true;
});
$( "#selectable" ).selectable();
});
Tengo un violín con lo que estoy tratando de lograr aquí:
http://jsfiddle.net/josephbulger/ZfevM/
El problema que estoy teniendo es que cuando me puse los parámetros del evento en el método de arranque, el método de parada no está viendo los cambios que estoy haciendo.
¿Hay una manera de lograr lo que estoy tratando de hacer?
Solución
No se pueden establecer las propiedades aquí no ... porque es un diferente event
objeto en el método stop
. Puede configurar algunas variables en un ámbito superior ( como esto ), pero ninguno que persistirán en el objeto event
. No es que se trata de "limpieza" que en realidad, es sólo un completamente nuevo objeto.
Para hacer que se comportan como si seleccionable Ctrl se mantiene pulsado, se unen al evento mousedown
se utiliza antes de tiempo y establecer la propiedad .metaKey
en ese event
para true
, como este:
$("#selectable").bind("mousedown", function(e) {
e.metaKey = true;
}).selectable();
Puede probarlo aquí , recuerde que debe encontrar antes llamando .selectable()
, ya que los controladores de eventos se ejecutan en el orden determinado.
Otros consejos
He actualizado el código. Echar un vistazo a esta dirección URL.
http://jsfiddle.net/phoenix_suresh/7f6j5/
atributo ID Mientras tanto, he añadido a
Después de encontrar esta respuesta me di cuenta de que se puede utilizar la propiedad originalEvent
en el objeto event
devuelto en el controlador de eventos start
seleccionable para establecer la propiedad ctrlKey
true.
Al igual que:
$("#selectable").selectable({
start: function (event, ui) {
event.originalEvent.ctrlKey = true;
}
});