【问题标题】:How would you use Trigger to fire the jquery draggable start, drag, stop events?您将如何使用 Trigger 来触发 jquery 可拖动的开始、拖动、停止事件?
【发布时间】:2014-03-03 17:43:29
【问题描述】:

如果我有一个可拖动的对象并具有启动、拖动、停止功能,我将如何触发它们?

我认为会导致问题的问题是传递给函数的参数。

我不确定是否有一种简单的方法可以做到这一点,是否可以使用某种模拟,或者我是否应该创建一个自定义对象,将其传递到 e 和 ui 函数属性。

我会写代码,但它很简单:

代码:

var $a = $("<div />").append("Test Text").appendTo("body").draggable({
    start: function(e,ui){/*...*/},
    drag: function (e,ui){/*...*/},
    stop: function (e,ui){/*...*/}
});

我想调用函数,本来我在想:

$a.draggable("option", "start")();
$a.draggable("option", "drag")();
$a.draggable("option", "stop")();

我只是快速浏览了一下代码,看看在哪里使用了哪些参数。

start:   ui.position.top|left
drag:    ui.position.top|left
stop:    ui.position.top|left, eventArgs.ClientX, eventArgs.ClientY, eventArgs.target

所有这些都有作用域和 this 之类的东西,但由于它正确地附加到调用点击的东西上,所以只调用函数而不引用手头的对象。

查看函数后,我应该能够创建对象以传递给触发器 OR 函数,就像我在上面的语句中触发它一样。

【问题讨论】:

  • 和你之前的问题有什么不同:stackoverflow.com/questions/22152604/…???
  • 你的目标是什么?你想用触发器完成什么?也许一个小提琴展示你的后会有所帮助。
  • 嗯,我在想的是触发器将参数应用于被调用的函数。这很好,但我不确定如何正确创建 E 和 UI 对象以将它们传递给参数。当然,对我来说,由于我没有使用所有这些,我可以通过阅读并找出函数本身使用哪些值来挑选对象中的值。
  • 不,这对我不起作用,部分原因是我没有定义正确的属性,其他原因可能是因为范围。我不认为函数存在范围问题(因为那将是糟糕的编程)
  • 将您的代码放入其中一个sitepoint.com/7-code-playgrounds 以便更好地检查。

标签: javascript jquery jquery-ui


【解决方案1】:

所以最初的想法是触发。它将调用与被调用的 Listener 关联的事件。

我被告知的第二个选项是应用。但是,在应用内联 js 时,需要有一个范围......因为在 arb 中调用它时范围是错误的。行代码。这不会指正在移动的文本框,而是指执行它的函数容器。

我首先构建了一个使用的参数列表,正如您在上面看到的,并且只是根据可拖动对象的范围应用它。

var s = [null,{position:{top:0,left:0}}],
    d = [null,{}position:{top:0,left:0}],
    sto = [{ClientX:0, ClientY:0, target:""},{]]
$("#my_item").draggable("option", "start").apply($("#my_item"), s);
$("#my_item").draggable("option", "drag").apply($("#my_item"), d);
$("#my_item").draggable("option", "stop").apply($("#my_item"), sto);

这个答案确实有效,因为它通过了正确的范围和所需的所有数据。我不确定是否有任何我不知道的隐藏功能等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    相关资源
    最近更新 更多