有没有办法在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() 之前找到它 ,因为事件处理程序是在命令绑定中执行的。

我已经更新了代码。 看看这个URL。

http://jsfiddle.net/phoenix_suresh/7f6j5/

同时,我已经添加了ID属性

  • 项目,以便您可以对其进行更多控制。
  • 找到这个答案后,我注意到你可以在selectable start事件处理程序中返回的event对象上使用originalEvent属性来将ctrlKey属性设置为true。

    像这样:

     $("#selectable").selectable({ start: function (event, ui) { event.originalEvent.ctrlKey = true; } }); 

    工作小提琴