【问题标题】:Programmatically trigger a jQuery-UI draggable's "drag" event [duplicate]以编程方式触发jQuery-UI可拖动的“拖动”事件[重复]
【发布时间】:2014-07-25 17:43:06
【问题描述】:

我试图在使用 jQuery-UI 的 draggable 小部件连接它之后立即在 div 上触发 drag 事件。我有一些代码在被拖动时会消失,我还想在页面加载后立即运行此代码一次。我有时会在其他 jQuery 处理程序上使用这样的习语:

$('.foo').on('bar', function() {
   console.debug('bar!');
}).trigger('bar');

这似乎不适用于draggable。这是我的代码:

var draggable = $('[draggable]').draggable({
   drag: function(event, ui) {
      //do some stuff
      console.debug(event);
   }
}).trigger('drag');

drag 处理程序在我拖动项目时被调用,而不是在页面加载时调用。

可能相关的信息:

  1. 当我拖动项目时,控制台中显示的事件如下所示:

    jQuery.Event {
       type: "drag",
       target: div#myElementId.ui-draggable,
       currentTarget: document,
       delegateTarget: document,
       data: null,
       //lots of other properties
    }
    
  2. 我尝试了各种调整,但没有任何效果:

    • 使用jQuery.Event构造函数并手动设置上述属性
    • 使用document.getElementById 指定我想要的确切元素
    • 触发mousedownmousedown.draggable 而不是drag(这是基于我找到的一些解决方法代码)

  3. 是的,我意识到我可以单独定义处理程序。我想这样做的部分原因是为了访问ui 参数,这为我提供了一种获取元素位置和偏移量的简单方法。我可以通过其他方式找到它们,但这很烦人。我也很好奇为什么这不起作用。

  4. 在 Google 和 SO 上的搜索没有找到任何解决方案,只有与我不相关的解决方法,以及对同一问题的其他投诉。 Jörn Zaefferer from the jQUI team recommended the jQuery.simulate plugin 作为一种解决方法,所以它可能是不可能的。他们不会使其与其他 jQuery 事件保持一致,这似乎很奇怪。

【问题讨论】:

  • 贾斯汀,我也想做同样的事情,你明白了吗?谢谢
  • @dav - 不。插件似乎不支持。您可能必须按照您在答案中的建议使用 jquery.simulate,或者自定义插件代码。
  • 是的,我评论过,但过了一段时间才发现那个插件))

标签: javascript jquery jquery-ui drag-and-drop


【解决方案1】:

这里是 jquery ui 插件

https://github.com/jquery/jquery-ui/blob/9e8e339648901899827a58e5bf919f7dda03b88e/tests/jquery.simulate.js

将其包含在页面上,然后简单地使用

$("#myElement").simulate('drag');

【讨论】:

【解决方案2】:

这样试试

var draggable = $('[draggable]').draggable({
    drag: function(event, ui) {
        dostuff(ui);
   }
});


function dostuff(ui){
    //do stuff with ui
}

【讨论】:

  • 谢谢,但我认为您没有理解这个问题。我正在尝试触发拖动事件,而不是为其附加处理程序。换句话说,我试图模拟用户开始拖动元素。
  • 我看到这个旧帖子回答了一个类似的问题,但我没有尝试stackoverflow.com/questions/730409/…
  • 只是drag: dostuff.. 无论如何,这是正确的方法+1
  • 是的,它也可以工作 :).. 确保函数定义为 dostuff(e, ui)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
  • 1970-01-01
  • 2011-03-30
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
相关资源
最近更新 更多