Only drop to element that is seen
drag-and-drop, javascript, jquery, jquery-ui
Solution
Try setting with `accept` function. The working demo.
$("#bottom, .draggable").droppable({
drop: function(event, ui) {
var $this = $(this),
$dragged = $(ui.draggable);
$this.append($dragged.clone());
},
accept: function () {
var $this = $(this), divTop= $("#top");
if ($this.is(".draggable")) {
return $this.offset().top < divTop.offset().top + divTop.height() ;
}
return true;
},
hoverClass: "dragHover"
});
Problem
I have the following: I am trying to set it up so that when you drag the item, it only gets dropped to the div element which you can see, and is not covered up. So I used this js: ``` $(".draggable").draggable({ helper: "clone" }) $("#bottom, .draggable").droppable({ drop: function(event, ui) { var $this = $(this), $dragged = $(ui.draggable); $this.append($dragged.clone()); }, hoverClass: "dragHover" }) ``` But it drops the element in both places even though only one of the drop zones is not visible! How do I fix it so that this does not happen? Fiddle: http://jsfiddle.net/maniator/Wp4LU/ Extra Info to recreate the page without the fiddle: HTML: ``` <div id="top"> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> <div class="draggable"> Lorem ipsum dolor sit amet </div> </div> <div id="bottom"></div> ``` CSS: ``` .draggable { border: 1px solid green; background: white; padding: 5px; } .dragHover{ background: blue; } #top { height: 500px; overflow-y: scroll; } #bottom { height: 150px; overflow-y: scroll; border: red solid 4px; } ```