2012-01-24 9 views
2

ドラッグ可能または削除可能のいずれかの要素を設定するために再利用可能な関数を作成しようとしました。このため2つの別々の機能を作成Jquery関数にメソッドを送信する "オブジェクト[オブジェクトDOMWindow]にメソッド 'each'がありません"

は動作します:

makedroppable($('.empty_child_article_image'), handleChildDropEvent); 

または

makedraggable($('.empty_related_article_image'), handleAlternativeDragEvent); 


function makedroppable(droppableClass, specificHandler){ 
    droppableClass.droppable({ 
    drop: specificHandler, 
    hoverClass: 'hovered' 
    }); 
}; 

または

function makedraggable(droppableClass, specificHandler){ 
     droppableClass.draggable({ 
     drop: specificHandler, 
     hoverClass: 'hovered' 
     }); 
    }; 

しかし、これは動作しません:

makedroppable($('.empty_child_article_image').droppable, handleChildDropEvent); 

    function makedroppable(dragordrop_func, specificHandler) { 
      dragordrop_func({ 
     drop: function(){specificHandler.apply($ ,specificHandler)}, 
      hoverClass: 'hovered', 
    }); 
    } 

と私は私のコンソールでこのエラーに「({dragordrop_func」の

オブジェクトのエラーを取得[オブジェクトがDOMWindow]いいえ方法「はそれぞれ」

私は他のソリューションの数を試みたがありません私が読んだことから、これはうまくいくはずです。私は間違って何をしていますか?

ヘルプやガイダンスは歓迎します。あなたが関数の引数として$('.empty_child_article_image').droppableを渡すとき

はあなた

答えて

1

thisオブジェクト参照が失われるありがとうございました。内部function makedroppable - >thisはウィンドウオブジェクトであり、$('.empty_child_article_image')オブジェクトではありません。

thisオブジェクトがwindowオブジェクトを指し、$('.empty_child_article_image')がドロップ可能関数を指していないため、エラーがスローされます。

+0

ご返信ありがとうございます。正しくパスする方法はありますか?それとも強制されますか? –

+0

人々のためのいくつかのさらなる助けとして私はそれを少し醜い方法で動作させるようにしました。これは文字列としてdroppableを送信し、角括弧で囲みます。 makedroppable($( '。empty_child_article_image')、 "droppable"、handleChildDropEvent); 関数makedroppable(セレクタ、dragordrop、specificHandler){ $(セレクタ)dragordrop({ ドロップ:dropFunction、 受け入れる: '.ui-ドラッグ' hoverClassは: 'ホバー')} } –

+0

@ user1166885 - 引数として渡すとコンテキストが失われます。 draggableは$( '。empty_child_article_image')。draggableと呼ばれます。 –

関連する問題