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; } ``` ​

Original source

Related problems