代码之家  ›  专栏  ›  技术社区  ›  Joseph

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

  •  4
  • Joseph  · 技术社区  · 14 年前

    我希望能够更改传递到selectable的start事件中的参数,因此基本上允许用户使用selectable 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 回复  |  直到 10 年前
        1
  •  14
  •   Nick Craver    14 年前

    你不能在这里设置属性不…因为它是 不同的 event 中的对象 stop 方法。你可以在更高的范围内设置一些变量( like this ),但没有一个会在 事件 反对。这并不是在“清除”它们,而是一个崭新的东西。


    使可选择的行为如同 Ctrl键 被按住,绑在 mousedown 它提前使用的事件并设置 .metaKey 财产 event true ,就像这样:

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

    You can test it out here ,记住要找到 之前 打电话 .selectable() ,因为事件处理程序是按顺序绑定执行的。

        2
  •  5
  •   phoenix_suresh    13 年前

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

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

    同时,我将ID属性添加到

  • 以便您可以对其进行更多控制。
  •     3
  •  4
  •   Luke Pfeiffer    9 年前

    找到这个答案后,我注意到你可以使用 originalEvent 上的属性 event 在可选的 start 事件处理程序设置 ctrlKey 属性为true。

    就像这样:

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

    工作 fiddle