0

ドラッグ アンド ドロップされたオブジェクトのメソッドを使用したいと考えています。

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


}
}

編集:

この方法でメソッドを呼び出すと:

            drop: function( event, ui ) {
            var draggable = ui.draggable;
            alert(...);
            var ic = new Icon("asdsa");
            ic.myMethod();
        },

それは機能しますが、ドラッグされたオブジェクトでメソッドを使用したいのですが、何らかの型キャストを行う必要がありますか?

編集: 回避策 最後に、ブール値を使用してドロップが成功したかどうかを確認し、ブール値が true の場合は draggable.stop でメソッドを呼び出すという回避策を使用しました。ブール値の状態は、ドロップが成功するとドロップ可能で true に設定され、draggable.start で false に設定されます。

4

2 に答える 2

0

問題は、作成したオブジェクトmyMethodの関数ですが、のインスタンスではないため、メソッドがありません。Iconui.draggableIconmyMethod

于 2013-03-08T14:46:59.870 に答える
0

値は、ui.draggablejQuery オブジェクト内に含まれる 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();
}
于 2013-03-08T15:04:35.240 に答える