У меня есть перетаскиваемый объект, который подключен через connectToSortable
к нескольким сортируемым объектам.Я хочу ограничить количество предметов, которые вы можете поместить в каждый сортируемый.Я могу сделать это, когда вы перетаскиваете из другого сортируемого, но не когда вы перетаскиваете из перетаскиваемого в сортируемое.Простой пример (например, JSBin ):
$( ".sortable" ).sortable({
connectWith: ".sortable"
});
$( ".sortable" ).bind( "sortreceive", function(event, ui) {
// This will not work because the sender is a draggable, which has no "cancel" method
if ( 4 < $( this ).sortable( 'toArray' ).length ) {
$(ui.sender).sortable('cancel');
}
});
$( "#draggable li" ).draggable({
connectToSortable: ".sortable",
helper: 'clone'
});
Сначала я попытался $(ui.sender).sortable('cancel');
в событии sortreceive
, но поскольку отправителем является draggable
, а не другой sortable
, у него нет cancel
метода, и он не работает (поэтому эти и эти вопросы, похоже, не решают мою проблему).Я пытался следовать логике, которая склеивает перетаскиваемое и сортируемое вместе , но я не вижу места, где можно прыгнуть и отменить «поддельную» остановку.
Было бы здорово, если быкакая-то визуальная обратная связь, например, изменение курсора мыши на no-drop
и / или изменение цвета фона на сортируемом.
Контекст: это попытка ответить Ограничить количество виджетов на боковых панелях в WordPress Stack Exchange.Страница администрирования виджетов WordPress имеет контейнер со всеми доступными виджетами, настроенными как перетаскиваемые, подключенные к различным сортируемым контейнерам для каждой боковой панели.Я не хочу изменять базовый код , просто добавьте в него как можно меньше кода, чтобы предотвратить падение другого виджета на «полную» боковую панель.