Скорее всего, потому что элемент не существовал, когда вы выполнили код для настройки перетаскивания. Вам необходимо зарегистрировать это с live () слушателем.
EDIT
Поскольку мы не имеем дело с событиями, я думаю, live()
не вариант. Я скоро вернусь к решению, но сначала позвольте мне объяснить, что происходит с вашим текущим кодом, и почему это не работает.
Фрагмент, который вы разместили здесь в комментарии, начинается с поиска набора элементов - $('.draggable')
- для последующего вызова .draggable()
, чтобы сделать их перетаскиваемыми. Все элементы, возвращаемые этим первым селектором, будут сделаны перетаскиваемыми. Это не какое-то «правило», которое хранится и постоянно проверяется, а просто одноразовое извлечение элементов, к которым можно применить функцию.
В то время, когда этот код выполняется, селектор $('.draggable')
не возвращает ваш DIV в наборе результатов, так как он не существует на данный момент. Когда он внезапно появляется, это все равно не меняет того факта, что это не был один из предметов, которые когда-то были возвращены $('.draggable')
, когда было инициировано перетаскивание. Он будет возвращен , однако, если бы этот запрос был выполнен сейчас, так что это именно то, что нам нужно сделать - выполнить тот же запрос еще раз.
Поэтому, когда вы добавляете новый элемент, который нужно сделать перетаскиваемым, вам нужно сначала уничтожить ваш текущий перетаскиваемый элемент:
$('.draggable').draggable('destroy');
... и затем создайте его еще раз, теперь, когда новый элемент находится в наборе:
$('.draggable').draggable( { your options... } );
Это должно сделать это.