Nienormalny_
Nienormalny_

Reputation: 470

Draggable element scrolling another div with overflow

Hi I have problem with draggable event. I can't scroll another div with helper.

This is example code, I wrote:

$('.test1').draggable({
  helper: 'clone',
  scroll: false,
  appendTo: '.scrolled-box',
  containment: '.test2',
  start: function(e, ui) {
    $(ui.helper).css({
      'opacity': '0.6'
    });
  }
});
.container {
  width: 250px;
  height: 100px;
  background-color: #ffecc9;
  padding: 10px;
  border-radius: 3px;
  border: 1px solid #333;
}

.test1 {
  width: 200px;
  height: 20px;
  border: 1px solid #333;
  background: #33cccc;
  border-radius: 3px;
  margin: auto;
}

.test1>p {
  font-size: 12px;
  font-weight: bold;
  margin: 0 auto;
  display: block;
  width: 100%;
  text-align: center;
  color: #333;
  padding: 2px 0;
}

.test2 {
  margin-top: 15px;
  width: 250px;
  height: 60px;
  overflow: auto;
  background-color: #333;
  border-radius: 3px;
  color: white;
}

.scrolled-box {
  height: 500px;
  width: 100%;
  text-align: center;
  position: relative;
}

span {
  position: absolute;
  bottom: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  <div class="test1">
    <p>
      drag me
    </p>
  </div>
  <div class="test2">
    <div class="scrolled-box">
      <span>scrolled box</span>
    </div>
  </div>
</div>

Please see this: JsFiddle

I did something wrong, and I don't know what. Please help me to lvl up my expirience with draggable (jquery ui). Im looking for solution without extra plugins. Just jQuery Ui.

Upvotes: 2

Views: 1954

Answers (1)

RonyLoud
RonyLoud

Reputation: 2436

You need to handle droppable event as well

$('.test1').draggable({
  scroll: true,
  helper: 'clone',
  revert: true,
  appendTo: '.scrolled-box',
  containment: '.test2',
  start: function (e, ui) {
  	$(ui.helper).css({'opacity': '0.6'});
  }
});

$('.test2').droppable({
  accept: ".test1",
  drop: function( event, ui ) {
				ui.helper.clone().appendTo('.scrolled-box');
    }
});
.container {
  width: 250px;
  height: 300px;
  background-color: #ffecc9;
  padding: 10px;
  border-radius: 3px;
  border: 1px solid #333;
}
.test1 {
  width: 200px;
  height: 20px;
  border: 1px solid #333;
  background: #33cccc;
  border-radius: 3px;
  margin: auto;
}
.test1 > p {
  font-size: 12px;
  font-weight: bold;
  margin: 0 auto;
  display: block;
  width: 100%;
  text-align: center;
  color: #333;
  padding: 2px 0;
}
.test2 {
  margin-top: 15px;
  width: 250px;
  height: 160px;
  overflow: auto;
  background-color: #333;
  border-radius: 3px;
  color: white;
  position: relative;
}
.scrolled-box {
  height: 600px;
  width: 100%;
  text-align: center;
  position: relative;
}
span {
  position: absolute;
  bottom: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<div class="container">
  <div class="test1">
    <p>
      drag me
    </p>
  </div>
  <div class="test2">
    <div class="scrolled-box">
      <span>scrolled box</span>
    </div>
  </div>
</div>

Upvotes: 2

Related Questions