当我将元素放入其中时,使可放置的 div 动态扩展

Make a droppable div dynamically expand when i drop an element into it

当我将问题 1 和问题 2 拖入问题槽时,我希望问题槽 div 在将第二个问题放入其中时动态扩展其大小。 即这两个问题都应该在放入问题槽时被容纳和可见。

Html:

<div id="questionsHolder">
    <div id="question1" class="question">
        1. This is a random question.
    </div>
</div>
<div id="questionsHolder1">
    <div id="question2" class="question1">
        2. This is a random question.
    </div>
</div>
 <br>
     <br><br><br><br><br>
 <div id="questionSlots"></div>

CSS:

.question {
  width: 500px;
  height: 50px;
  margin-top: 25px;
  background: #ebedf2;
  border: 1px solid #333;
  clear: both;
  text-align: center;
  z-index: 200;
}
.question1 {
  width: 500px;
  height: 50px;
  margin-top: 25px;
  background: #ebedf2;
  border: 1px solid #333;
  clear: both;
  text-align: center;
  z-index: 200;
}

#questionSlots div {
  /*margin-top: 25px;*/
  border-width: 3px;
  border-style: dashed;
  width: 496px;
  height: 46px;
  background: #ddf;
    overflow:hidden;
}

#questionsHolder{
  border-width: 3px;
  border-style: dashed;
  width: 496px;
  /*height: 46px;*/
  background: grey;
}
#questionsHolder1{
  border-width: 3px;
  border-style: dashed;
  width: 496px;
  /*height: 46px;*/
  background: grey;
}

#questionSlots .question.hovered {
  background: green;
}

JS:

$( init );

function init() {
    // Create droppable
            $('<div id="slot1"></div>').appendTo( '#questionSlots' ).droppable( {
              accept: '#questionsHolder div,#questionsHolder1 div',

              hoverClass: 'hovered',
                drop:function(event, ui){
                    ui.draggable.position( { of: $(this), my: 'left top', at: 'left top' } );
                }
            } );

    $('#questionsHolder').droppable( {
              //accept: '#slot1 div',
              hoverClass: 'ui-state-highlight',
                 drop:function(event, ui){
                    ui.draggable.position( { of: $(this), my: 'left top', at: 'left top' } );
                }  

            } );

    // Make question draggable
        $("#question1").draggable( {
            cursor: 'move',
            //snap: '#content',
            revert: 'invalid'
            } );
              // Make question draggable
        $("#question2").draggable( {
            cursor: 'move',
            //snap: '#content',
            revert: 'invalid'
            } );

    /*function handleQuestionDrop( event, ui ) {
        // Make sure no more questions get dropped at droppable
        // position it directly on top of the slot
        $(this).droppable({ accept: ('#' + $(ui.draggable).attr('id') ) });
        ui.draggable.position( { of: $(this), my: 'left top', at: 'left top' } );
        ui.draggable.draggable( 'option', 'revert', false );

    }*/
    }

js fiddle : http://jsfiddle.net/6zGLk/14/

如果能帮我编辑一下jsfiddle代码并转发你的link.

就更好了

提前致谢。

您只想将 $.appendTo()$.sortable() 一起使用。更新了你的函数,CSS 也更新了一点。

$(init);

function init() {
  $('<div id="slot1"></div>').appendTo('#questionSlots').droppable({
    accept: '#questionsHolder div,#questionsHolder1 div',
    hoverClass: 'hovered',
    drop: function(event, ui) {
      ui.draggable.css({
        top: 0,
        left: 0
      }).appendTo(this);
    }
  }).sortable();

  $('#questionsHolder, #questionsHolder1').droppable({
    //accept: '#slot1 div',
    hoverClass: 'ui-state-highlight',
    drop: function(event, ui) {
      ui.draggable.css({
        top: 0,
        left: 0
      }).appendTo(this);
    }

  });

  $("#question1,#question2").draggable({
    cursor: 'move',
    revert: 'invalid',
  });

}
.question {
  width: 500px;
  height: 50px;
  background: #ebedf2;
  border: 1px solid #333;
  clear: both;
  text-align: center;
  position: relative;
  z-index: 1;
}

.question1 {
  width: 500px;
  height: 50px;
  background: #ebedf2;
  border: 1px solid #333;
  clear: both;
  text-align: center;
}

#questionSlots div {
  /*margin-top: 25px;*/
  border-width: 3px;
  border-style: dashed;
  width: 496px;
  min-height: 46px;
  background: #ddf;
  overflow: hidden;
}

#questionsHolder {
  border-width: 3px;
  border-style: dashed;
  width: 496px;
  height: 46px;
  background: grey;
}

#questionsHolder1 {
  border-width: 3px;
  border-style: dashed;
  width: 496px;
  height: 46px;
  background: grey;
}

#questionSlots .question.hovered {
  background: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<div id="questionsHolder">
  <div id="question1" class="question">
    1. This is a random question.
  </div>
</div>
<div id="questionsHolder1">
  <div id="question2" class="question1">
    2. This is a random question.
  </div>
</div>
<br>
<br>
<br>
<br>
<br>
<br>
<div id="questionSlots"></div>