http://jsfiddle.net/xSQBw/证明了我的问题。请注意,当您将一个框拖出其父级并将其重新放回父级时,父级将接受该元素。当孩子被拖拽时,我需要禁用父母的可丢弃性。然后我需要在孩子掉线后重新启用droppable'。
我尝试使用start:和stop:用于droppable的方法,但是,获取正确的元素以禁用/重新启用是棘手的,kludgy,并且无论如何都不起作用。
以下是我尝试使用droppable处理程序的示例:
$('<fieldset />',
{
id: login,
level: self.levelValue,
class: 'member ' + employeeClass,
}).appendTo('#columnWrapDiv')
.droppable(
{
hoverClass: 'hovered',
drop: function(event,ui) { /* removed */});
我的拖鞋:
$('.class')
.draggable(
{
containment: '#ttkanbanDiv',
cursor: 'crosshairs',
revert: true,
opacity: 0.4,
start:
function(ui)
{
var id = $($($(ui).attr('srcElement'))
.parents()
.find('.ui-droppable')[0]).attr('id');
$('#' + id).removeClass('ui-droppable');
},
stop:
function(ui)
{
$($($(ui).attr('srcElement'))
.parents()
.find('.ui-droppable')[0])
.addClass('ui-droppable');
},
zindex: 'auto',
});
答案 0 :(得分:2)
修复:http://jsfiddle.net/xSQBw/1/
使其有效的特定代码(感谢irc.freenode.net #jquery中的Shoky):
$('#unassignedDiv,.member').droppable({
hoverClass: 'hovered',
accept: function(draggable) {
draggable = draggable[0];
var droppable = this;
return !$.contains(droppable, draggable);
},
drop: ...