可拖动元素滚动另一个带溢出的div

时间:2017-11-15 09:42:18

标签: javascript jquery jquery-ui jquery-ui-draggable

嗨我有可拖动事件的问题。 我无法用帮助者滚动另一个div。

这是示例代码,我写道:



$('.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>
&#13;
&#13;
&#13;

请参阅:JsFiddle

我做错了什么,我不知道是什么。 请帮助我通过draggable(jquery ui)获得我的经验。 我正在寻找没有额外插件的解决方案。只是jQuery Ui。

1 个答案:

答案 0 :(得分:2)

您还需要处理droppable事件

&#13;
&#13;
$('.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');
    }
});
&#13;
.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;
}
&#13;
<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>
&#13;
&#13;
&#13;