我想使用拖放对象的方法。
function Controller(){
$( "#container" ).droppable({
drop: function( event, ui ) {
var draggable = ui.draggable;
alert( "Dropped:" + draggable.attr('id'));
draggable.myMethod();
}
});
你能解释为什么这不起作用吗? 警报显示正确的对象被丢弃, 但我不能使用这种方法。
对象看起来像这样:
function Icon(name) {
var name = name;
this.myMethod = function() {
alert("test")};
this.getInfo = function() {
var dataname = this.getName();
//BErtram
$("#" + dataname).draggable({ revert: "valid" });
//Bertram Ende
}
}
修改
如果我以这种方式调用Method:
drop: function( event, ui ) {
var draggable = ui.draggable;
alert(...);
var ic = new Icon("asdsa");
ic.myMethod();
},
它可以工作,但是我想在拖动的Object上使用Method,我是否需要进行某种类型转换?
修改:解决方法 最后我使用了一个解决方法,使用bool来检查是否有成功的drop并在draggable.stop中调用该方法,如果boolean ist为true。 boolean的状态在成功放置的droppable中设置为true,并在draggable.start中设置为false。
答案 0 :(得分:0)
问题是myMethod
是您创建的Icon
对象的函数,但ui.draggable
不是Icon
的实例 - 所以它没有{{ 1}}方法。
答案 1 :(得分:0)
ui.draggable
值是jQuery对象中包含的DOM元素。您需要一种机制来从元素映射回负责它的Icon
。
最简单的方法是使用.data()
:
function Icon(name) {
$('#' + name).data('self', this);
...
}
然后在事件处理程序中检索该对象:
drop: function(event, ui) {
var draggable = ui.draggable;
var icon = draggable.data('self');
icon.myMethod();
}