Я использую библиотеку Scriptaculous, чтобы создать привлекательный пользовательский интерфейс для приложения, которое помогает конечному пользователю создавать списки. Скажем, для создания пиццы.
Чтобы заполнить заказ, вы перетаскиваете размер пиццы из палитры пиццы в выпадающие заказы. Как только он помещается туда, он заменяется новым div, который можно перетаскивать (потому что вы можете избавиться от него, перемещая его обратно в палитру) и сбрасывать (потому что вы можете добавлять в него ингредиенты).
Затем вы можете добавить ингредиенты из своей палитры ингредиентов к любой из пицц, которые у вас есть в группе заказов.
Я успешно реализовал эти биты, и все работает нормально. Приверженец: если я попытаюсь перетащить ингредиент из размещенной пиццы, которая правильно помечена как перетаскиваемая и которая, на всякий случай, расположена над пиццей по оси z, вместо этого он захватит всю пиццу целиком. Это делает невозможным отмену выбора ингредиентов, что является ключевой особенностью этого экрана.
Любые предложения о том, как я могу заставить это делать то, что я хочу? В идеале я хотел бы сохранить простой пользовательский интерфейс с перетаскиванием, поскольку он миры более интуитивно понятен, чем то, что мы использовали ранее. (Многоступенчатая HTML-форма... содрогание...)