Как запретить jQuery Droppable принимать определенные перетаскиваемые файлы?

#jquery #draggable #droppable

#jquery #перетаскиваемый #droppable

Вопрос:

Я создаю страницу с «группами» перетаскиваемых виджетов, и каждый перетаскиваемый файл может быть удален только в одной группе перетаскиваемых файлов.

Я смог добиться этого с помощью следующего кода:

 $("div.droppable").droppable({
    //accept: ".draggable",
    accept: function (draggable) {
        if ($(this).attr("question_id") != null) {
            if ($(this).attr("question_id") == draggable.attr("question_id")) return true;
        }
        return false;
    });
  

Однако теперь у меня возникли небольшие проблемы. После удаления я не смог переместить перетаскиваемый файл вокруг перетаскиваемых файлов в той же группе, что и раньше. Я мог бы один раз перенести его в droppable, переместить в другой, но я не мог переместить его обратно в первый droppable.

Кто-нибудь знает, что могло произойти? Приветствуется любой ввод.

Ответ №1:

Понятия не имею, что не удалось в вашем коде. Я создал этот тестовый пример на jsFiddle, который работает должным образом. Как видно из этого тестового примера, я использую .data для получения идентификатора вопроса.

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

Комментарии:

1. Отлично, это работает. Я использую <идентификатор div=»xxx» question_id=»гггг»> …</div>. Не уверен, почему это не работает таким образом.

2. Приятно слышать! Возможно, вы используете подчеркивание в качестве разделителя. Кроме того, при работе с пользовательскими атрибутами используйте префикс data, поскольку он определен стандартом HTML5 и легко доступен .data функцией jQuery. Прочитайте эту статью Джона Ресига по теме.

3. Нет, я использую символы подчеркивания как в перетаскиваемых, так и в удаляемых событиях. И спасибо за помощь и ссылку.