如果我有一个可拖动的对象并具有开始,拖动,停止功能,我将如何触发它们?
我认为会导致问题的问题是传递给函数的参数。
我不确定是否有一种简单的方法可以做到这一点,如果有某种模拟可以使用,或者我应该创建一个自定义对象,其中将传递到 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函数,因为我在上面的语句中将其触发了。
答案 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);
这个答案确实有效,因为它传递的是正确的范围和所需的所有数据。我不确定是否有任何我不知道的隐藏功能等。