在JQuery中使用Dropped Object中的方法

时间:2013-03-08 13:41:04

标签: javascript jquery jquery-ui-droppable

我想使用拖放对象的方法。

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。

2 个答案:

答案 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();
}