有没有办法在jQuery中更改事件参数?

时间:2010-11-18 13:39:58

标签: jquery jquery-ui events jquery-ui-selectable

我希望能够更改传递给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方法没有看到我正在进行的更改。

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

3 个答案:

答案 0 :(得分:14)

您无法在此处设置属性,因为它是event方法中的不同的 stop对象。您可以在更高的范围(like this)设置一些变量,但不会在event对象上保留任何变量。并不是说它真的“清理”它们,它只是一个打击新物体的品牌。


要使可选择的行为与按住 Ctrl 一样,请提前绑定到它使用的mousedown事件,并在{{3}上设置.metaKey属性转到true,就像这样:

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

event,记得在调用.selectable()之前找到,因为事件处理程序是按照绑定的顺序执行的。

答案 1 :(得分:5)

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

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

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

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

  • 答案 2 :(得分:4)

    找到此答案后,我注意到您可以使用可选originalEvent事件处理程序中返回的event对象上的start属性将ctrlKey属性设置为true

    像这样:

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

    工作fiddle