2012-01-24 58 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')。可拖动。 –