2010-03-13 93 views
0

我需要知道如何检测拖动项目的位置而不是其他div。我需要检测一个项目是否被丢弃在两个不同的div之外。 (我正在构建一个mac dock类型的开始页面,我需要知道如何做到这一点,所以我可以通过将它们拖出酒吧来删除图标。)通过拖放和jQuery检测位置?

任何帮助将不胜感激。

+0

你是这样吗?http://www.ajaxplaza.net/dragndrop/dragndrop.htm – jjj 2010-03-14 11:12:53

+0

是的。这就是我的意思,我只是想知道如何检测拖动项是否在两个不同的div中的一个内。 – 2010-03-16 20:06:42

回答

0

您可以使用jquery ui的draggabledroppable的组合。设置你的工具栏为可拖拽,你的图标可拖动像这样:

var deleteClass = 'deleteMe'; 

$('div.toolbar').droppable({ 
    out:function(event, ui){ 
     ui.draggable.addClass(deleteClass); 
    }, 
    over:function(event,ui){ 
     ui.draggable.removeClass(deleteClass); 
    } 
});​​​​​​​​​​​​​​​​​​​​ 

$('div.icon').draggable({ 
    helper:'clone', 
    revert:'valid', 
    opacity:.5, 
    stop: function(event,ui){ 
     if($(this).hasClass('deleteMe')){$(this).fadeOut();} 
    }  
}); 

基本上,工作是在事件。可拖拽工具栏上的遍历和结束事件添加和删除图标上的一个类,我们可以将其用作标志来知道图标何时未在工具栏上。如果图标不在工具栏上,可拖动图标上的停止事件让我们删除该图标。你可以试试this jsFiddle。我相信也可以使用jquery ui sortable小部件完成相同的操作,这样您还可以让用户根据需要重新排列图标。