有没有办法在jQuery中更改事件参数?
我希望能够更改传递给selectable的start事件的参数,因此我基本上可以允许我的用户使用可选择的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/
我遇到的问题是,当我在start方法中设置事件的参数时,stop方法没有看到我正在进行的更改。
有没有办法完成我想要做的事情?
您无法在此处设置属性…因为它是stop
方法中的不同 event
对象。 您可以在更高的范围设置一些变量( 如此 ),但不会在event
对象上保留任何变量。 并不是说它真的“清理”它们,它只是一个打击新物体的品牌。
要使selectable的行为与按住Ctrl一样 ,请提前绑定到它使用的mousedown
事件,并将该event
的.metaKey
属性设置为true
,如下所示:
$("#selectable").bind("mousedown", function(e) { e.metaKey = true; }).selectable();
你可以在这里测试一下 ,记得在调用.selectable()
之前找到它 ,因为事件处理程序是在命令绑定中执行的。
找到这个答案后,我注意到你可以在selectable start
事件处理程序中返回的event
对象上使用originalEvent
属性来将ctrlKey
属性设置为true。
像这样:
$("#selectable").selectable({ start: function (event, ui) { event.originalEvent.ctrlKey = true; } });
工作小提琴