Функция Draggable и Droppable - PullRequest
       5

Функция Draggable и Droppable

1 голос
/ 01 декабря 2011

Допустим, у меня есть несколько сбрасываемых div'ов с левой стороны под названием зона 1 - 4.

<div id="zone1"></div>
<div id="zone2"></div>
<div id="zone3"></div>
<div id="zone4"></div>

И некоторые перетаскиваемые предметы на моей правой стороне

<div id="drag1">Apple</div>
<div id="drag2">Banana</div>
<div id="drag3">Kiwi</div>
<div id="drag4">Orange</div>

Я знаю, что могу настроить их как перетаскиваемые и сбрасываемые следующим образом:

for (var i=1;i<=4;i++)
{
   var x = "zone" + i;
   $(x).droppable();
}
  for (var i=1;i<=4;i++)
{
   var x = "drag" + i;
   $(x).draggable();
}

Теперь, как бы я запустил функцию запуска, когда фрукт упал в зону, которая даст мне и то, куда он упал (зона 1, зона 2 и т. Д.), А также какой фрукт упал там. В идеале, я не хотел бы, чтобы название плода, я хотел бы идентификатор, связанный с фруктом, возможно, скрытый в скрытом входном теге или что-то?

Ответы [ 4 ]

1 голос
/ 01 декабря 2011

Я предлагаю вам сделать это вместо того, что у вас есть.

<div id="zone1" class="droppable"></div>
<div id="zone2" class="droppable"></div>
<div id="zone3" class="droppable"></div>
<div id="zone4" class="droppable"></div>

<div id="drag1" class="draggable">Apple</div>
<div id="drag2" class="draggable">Banana</div>
<div id="drag3" class="draggable">Kiwi</div>
<div id="drag4" class="draggable">Orange</div>

Тогда для вашего скрипта:

var fruit_id = '';
var dropbox_id = '';
$( '.draggable' ).draggable();
$( '.droppable' ).droppable({
               drop: function( event, ui ) {
            fruit_id = $(ui.draggable).attr('id');
                            dropbox_id = $( this ).attr('id');
                            /* DO SOMETHING HERE */
        }
});
/* Or do something here! */

Надеюсь, это поможет!

0 голосов
/ 01 декабря 2011
<style>
.zones>div{ border:solid 1px gray; background-color:yellow; padding:20px;margin:5px;}
</style>

<div class="zones">
    <div id="zone1"></div>
    <div id="zone2"></div>
    <div id="zone3"></div>
    <div id="zone4"></div>
</div>


<div id="drag1" fruitid="1">Apple</div>
<div id="drag2" fruitid="2">Banana</div>
<div id="drag3" fruitid="3">Kiwi</div>
<div id="drag4" fruitid="4">Orange</div>

<script>

$("div[id*='zone']").droppable({
            accept: "div[id*='drag']",
            drop: function( event, ui ) {
                alert( ui.draggable.text() + " with fruitid = "+ ui.draggable.attr("fruitid")+" added to " + $(this).attr("id"));
                  $( "<div/>" ).text( ui.draggable.text()).appendTo( this );
            }
        })
$('div[id*="drag"]').draggable({helper: "clone"});

</script>
0 голосов
/ 01 декабря 2011

Вы можете использовать drop событие взаимодействия droppable.В этом случае обработчик $(this) указывает на элемент перетаскивания, а ui.draggable указывает на перетаскиваемый элемент.

for (var i=1;i<=4;i++)
{
   var x = "zone" + i;
   $(x).droppable({
      drop: function(){
          //This will alert the id of container in which fruit is dropped
          alert($(this).attr('id'));

          //This will alert the id of fruit container which is dragged
          alert($(ui.draggable).attr('id'));
      }
   });
}
  for (var i=1;i<=4;i++)
{
   var x = "drag" + i;
   $(x).draggable();
}
0 голосов
/ 01 декабря 2011

Пример из этого урока

$(init)

function init() {
  $('#makeMeDraggable').draggable();
  $('#makeMeDroppable').droppable( {
    drop: handleDropEvent
  } );
}

function handleDropEvent( event, ui ) {
  var draggable = ui.draggable;
  alert( 'The square with ID "' + draggable.attr('id') + '" was dropped onto me!' );
}
...