2012-01-24 97 views
2

我有一個問題,試圖創建一個可重用的函數來設置元素爲可拖動或可拖拽。Jquery發送一個函數的方法「對象[對象DOMWindow]沒有方法'each'」

創建此2種獨立功能的工作原理:

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]有沒有方法「每個」

我已經嘗試了一些其他的解決方案並從我讀過這應該工作。我究竟做錯了什麼?

歡迎任何幫助或指導。

謝謝

回答

1

this對象引用時丟失傳遞$('.empty_child_article_image').droppable作爲參數傳遞給函數。裏面的function makedroppable - >this將是窗口對象而不是你的$('.empty_child_article_image')對象。

所以錯誤被拋出,因爲this對象指向window對象,而不是$('.empty_child_article_image')裏面的droppable函數。

+0

感謝您的回覆。有沒有辦法確保它正確傳遞?或者強迫它呢? –

+0

隨着人們的進一步幫助,我確實讓它的工作方式更加難看。這是將字符串作爲字符串發送,然後將其包裝在方括號中。 makedroppable($('。empty_child_article_image'),「droppable」,handleChildDropEvent); 功能makedroppable(選擇器,dragordrop,specificHandler){ $(選擇器)[dragordrop]({ 降:dropFunction, 接受: '的.ui-拖動', hoverClass: '盤旋' )} } –

+0

@ user1166885 - 當您將它作爲參數傳遞時,您會失去上下文。可拖動的被稱爲$('。empty_child_article_image')。可拖動。 –