Как я могу вставить объект в контекст перетаскиваемого элемента в JQuery? - PullRequest
0 голосов
/ 16 сентября 2009

Я использую перетаскиваемую / сбрасываемую функцию JQuery следующим образом

div.container {
    height:400px;
}

<div class="container" id="source">
    <div id="0">Item 0</div>
    <div id="1">Item 1</div>
    <div id="2">Item 2</div>
</div>

<div class="container" id="target"></div>

$("#source div").draggable({
    helper:"clone",
        revert:"invalid"
    });

Я хотел бы знать, возможно ли внедрить объект в контекст перетаскиваемого объекта. Что-то вроде

var contextualObject = {"property":"value"};

$("#source div").draggable({
    helper:"clone",
        revert:"invalid",
        injected:contextualObject
    });

Таким образом, в целевом контейнере я мог бы использовать что-то вроде (Обратите внимание на второе предупреждение)

$("#target").droppable({
    accept:"#source div",
tolerance: "fit",
drop:function(e, ui) {
        alert("You have dropped id " + $(this).attr("id"));

        alert("Its contextual value is: " + $(this).draggable("option", "injected.property"));
}});

Как я могу это сделать?

С уважением,

1 Ответ

2 голосов
/ 17 сентября 2009

Данные jQuery созданы для такого рода вещей.

$("#source div").draggable({
    helper:"clone",
        revert:"invalid",
        start: function(evt,ui) {
           $(this).data('injected', contextualObject)
        }
    });

Тогда, в вашем сбрасывании:

 var obj = $(ui.draggable).data('injected');
 console.log(obj.property);

Пара заметок:

  • Вы должны использовать ui.draggable в своем падении, чтобы получить предмет, который перетаскивается. this это предмет, брошенный на
  • Идентификатор элемента должен начинаться с буквы , а не с цифры.

У меня есть рабочая демоверсия здесь .

...