你将如何使用Trigger来触发jquery draggable start,drag,stop events?

时间:2014-03-03 17:43:29

标签: javascript jquery jquery-ui

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

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

我不确定是否有一种简单的方法可以做到这一点,如果有某种模拟可以使用,或者我应该创建一个自定义对象,其中将传递到 e < / em>和 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

所有这些都有像scope这样的东西,但是因为它被正确地附加到调用点击的东西上会有所不同,然后调用函数而不引用手头的对象。

在查看函数之后,我应该能够创建对象以传递到触发器OR函数,因为我在上面的语句中将其触发了。

1 个答案:

答案 0 :(得分:1)

首先,这个想法是Trigger。它将调用与监听器关联的事件。

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

我首先构建一个使用的args列表,正如您在上面看到的那样,只是在给定可拖动对象的范围时应用了它。

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);

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