有没有办法改变 jQuery 中的事件参数?
-
26-09-2019 - |
题
我希望能够更改传递到可选择项的启动事件中的参数,因此我基本上可以允许用户使用可选择的 jQuery UI 效果,而无需按住 CTRL 键。
JS
$(function() {
$( "#selectable" ).bind("mousedown", function(event, ui) {
var result = $( "#select-result" ).empty();
event.metaKey = event.ctrlKey = true;
});
$( "#selectable" ).selectable();
});
我对我想要在这里完成的事情有一个困惑:
http://jsfiddle.net/josephbulger/ZfevM/
我遇到的问题是,当我在启动方法中设置事件的参数时,停止方法看不到我所做的更改。
有办法完成我想做的事情吗?
解决方案
你不能在这里设置属性不...因为它是 不同的 event
对象在 stop
方法。您可以在更高的范围内设置一些变量(像这样),但没有一个会持续存在 event
目的。这并不是说它真的在“清理”它们,它只是一个全新的对象。
使可选择的行为就像 控制键 被按住,绑定到 mousedown
它提前使用事件并设置 .metaKey
财产在那 event
到 true
, , 像这样:
$("#selectable").bind("mousedown", function(e) {
e.metaKey = true;
}).selectable();
你可以在这里测试一下, ,记得找 前 呼叫 .selectable()
, ,因为事件处理程序是按顺序执行的。
其他提示
找到这个答案我注意到,你可以使用originalEvent
财产可选择的event
事件处理程序start
属性设置为true返回ctrlKey
对象后。
像这样:
$("#selectable").selectable({
start: function (event, ui) {
event.originalEvent.ctrlKey = true;
}
});
不隶属于 StackOverflow