Чтобы изменить недавно вставленный элемент, вы должны использовать событие получения сортируемого. Однако на сегодняшний день в пользовательском интерфейсе jQuery (1.8.11) есть известная функция ограничения / отсутствия, так что вы не можете легко получить доступ к клонированному элементу из события receive. Существующий ui.item ссылается на оригинальный элемент, а не на копию.
В качестве обходного пути вы можете добавить специальный класс к исходному элементу, когда начинается перетаскивание, для которого вы можете искать элементы сортируемого объекта в событии receive (которое срабатывает после вставки клона в DOM). По окончании перетаскивания вы должны убедиться, что, что бы ни случилось, ни у каких элементов в вашем документе не должно быть установлен специальный класс. Это особенно важно, если вы копируете / клонируете, так как событие получения сортируемого объекта запускается ПЕРЕД событием остановки draggable (где мы удаляем специальный класс из нашего исходного draggable).
http://jsfiddle.net/3Gkrf/1/
HTML:
<ul>
<li id="test" class="dragme">Test</li>
</ul>
<ul class="sortme">
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
CSS:
.dragme { border:1px solid silver; width:50px; height:50px; }
.newitem { background-color:yellow; }
JavaScript:
$(function(){
$(".sortme").sortable({
receive: function(){
$(this).find(".newitem").each(function(){
$(this).removeClass("newitem");
// Do your stuff with $(this), which is the newly created cloned item
});
}
});
$(".dragme").draggable({
connectToSortable: ".sortme",
helper: "clone",
start: function(){
$(this).addClass("newitem");
},
stop: function(){
$(this).removeClass("newitem");
}
});
});
Если вы просто хотите создать другой экземпляр вручную, когда перетаскивание останавливается, это возможно для события остановки перетаскиваемого объекта. Тем не менее, я не думаю, что есть надежный способ обнаружить, была ли она сброшена на сортируемую или где-то еще.
stop: function(){
var clone = $(this).clone().appendTo("#wherever");
// do anything else with the clone variable here
}
Вы должны вручную клонировать свой объект, потому что, даже если вы настроите помощника для его клонирования, помощник будет уничтожен всякий раз, когда перетаскивание прекращается. Если он упал на сортируемую, вы можете получить два новых объекта, поскольку сортируемая автоматически клонируется при получении.