当我将一个元素放入其中时,使一个droppable div动态展开

时间:2017-08-11 16:39:58

标签: jquery html css jquery-ui draggable

当我拖动问题1&问题2问题问题我想问题Slots 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小提琴:http://jsfiddle.net/6zGLk/14/

如果您可以通过编辑js小提琴代码并转发链接来帮助我,那会更好。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

}
&#13;
.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;
}
&#13;
<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>
&#13;
&#13;
&#13;