4

我希望能够更改传递给可选择项的启动事件的参数,因此我基本上可以允许我的用户使用可选择的 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 方法没有看到我正在做的更改。

有没有办法完成我想做的事情?

4

3 回答 3

14

您不能在此处设置属性...因为它是方法中的不同 event对象stop。您可以在更高的范围内设置一些变量(像这样),但没有一个变量会在event对象上持续存在。并不是说它真的在“清除”它们,它只是一个全新的对象。


要使 selectable 表现得好像Ctrl被按住,请绑定到mousedown它提前使用的事件并将其.metaKey属性设置eventtrue,如下所示:

$("#selectable").bind("mousedown", function(e) {
    e.metaKey = true;
}).selectable();

你可以在这里测试一下,记得在调用之前.selectable()找到,因为事件处理程序是按照绑定的顺序执行的。

于 2010-11-18T13:43:51.157 回答
5

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

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

同时,我已将 ID 属性添加到

  • 项目,以便您可以对其进行更多控制。

  • 于 2011-09-07T09:44:08.500 回答
    4

    找到这个答案后,我注意到您可以使用可选事件处理程序中返回originalEvent的对象的属性将属性设置为 true。eventstartctrlKey

    像这样:

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

    工作小提琴

    于 2015-06-02T13:23:10.837 回答