2017-10-08 187 views
1

我使用jQuery UI .droppable将元素放置到div。现在我需要防止如果它们不是空的,则将它放到类.box的div上。防止下降到div如果它不是空的

我想:

if ($('.box').is(':empty')) { 
    $(".box").droppable({ 

    }); 
} 

但是,这使所有.box申报单非可弃他们是否是空。

+0

也许尝试使用' .preventDefault()'方法。 [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault) – PredatorIWD

+0

上面的代码基本上说,如果任何'.box'有任何':empty'那么所有的'.box'都会被droppable ..你也许可以这样做 - >'$(“。box:empty”)。droppable({})' – Keith

+0

@Keith不幸的是,你的代码和我的代码一样使用 – Igor234

回答

0

下面的代码将检查元素box中是否有任何文本或其他元素。你可以尝试把文字或添加子元素,以该div可以肯定,它的工作:

if (!$('.box').text() && $('.box').children().length === 0) { 
 
    console.log("droppable"); 
 
    /*$(".box").droppable({ 
 
    // code here 
 
    });*/ 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="box"></div>

+0

。 Div是空的,但不可丢弃(((( – Igor234

+0

@ Igor234,可能是你正在使用'.droppable'以错误的方式 –

+0

我使用它就像'$(“。box”)。droppable({'。你的答案是有效的。在DOM Inspector中,我发现div是空的,但仍然不可删除 – Igor234

0

因此,解决办法是:

$(".box").droppable({ 
    accept: function() { 
     return $(this).find("*").length == 0; 
    }, 
    drop: function(event, ui) { 
     var $this = $(this); 
     $this.append(ui.draggable.css({ 
      top: 0, 
      left: 0 
     })); 
    } 
});