0

I use jQuery UI .droppable for dropping elements to divs. Now I need to prevent dropping to divs with class .box if they are not empty.

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

    });
}

But this makes all .box divs non-droppable whether they are empty or not.

2
Contributors
2
Replies
22
Views
1 Month
Discussion Span
Last Post by Ivan_17
0

Hi,
here's a short example on how you would apply it inside an empty div. Only one div has some text inside and this will prevent any changes made by the drop event except from the 3 divs.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style type="text/css">
  .box {
    width: 200px;
    height: 200px;
    background: #000;
    margin-bottom: 50px;
    color: #ff8877;
    text-align: center;
    position: relative;

  }
  .box span {
    display: block;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 1.2em;
  }
  .box.bg-grey {
    background: #ddd;
  }
  </style>
</head>
<body>

  <div class="box"></div>
  <div id="boxie" class="box"></div>
  <div class="box"><span>DROP HERE!</span></div>
  <div class="box"></div>

          <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
          <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

        <script type="text/javascript">
        jQuery(document).ready(function($) {
          $(function() {
          $('.box').draggable();
          $('.box').droppable({
            drop: function(event, ui ) {
              $('.box:empty').toggleClass('bg-grey');

            }
          });
        });

        });
        </script>

</body>
</html>

Hope this helps.

0

Unfortunately, there is no difference among those 4 divs. Dropping works for them all

Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.