#jquery #drag-and-drop
#jquery #перетаскивание
Вопрос:
Я пытаюсь открыть модальное окно после удаления элемента. Я обыскал доски объявлений и ничего не могу найти. Вот что у меня есть на данный момент, но это не работает. Элемент перетаскивается, как и должно быть, но модальный файл не открывается:
$("#таблица #еда li.corn" ).перетаскиваемый({ отменить: "недопустимо", Класс на воздушной подушке: "пользовательский интерфейс-состояние-активно", выпадение: функция (событие, пользовательский интерфейс) { $( "#cornDialog").dialog( "открыть"); возвращает false; } }); $( "#plate ul").сбрасывается({ Класс на воздушной подушке: "пользовательский интерфейс-состояние-активно", выпадение: функция (событие, пользовательский интерфейс) { $(this).addClass( "ui-state-highlight"); } }); $( "#cornDialog").dialog({ Автозапуск: false, показать: "слепой", скрыть: "медленно" });
Ответ №1:
Попробуйте перейти $( "#cornDialog" ).dialog( "open" );
в drop:
функцию выпадающего.
Вот так:
$( "#plate ul" ).droppable({
hoverClass: "ui-state-active",
drop: function( event, ui ) {
$(this).addClass( "ui-state-highlight" );
$( "#cornDialog" ).dialog( "open" );
}
});
РЕДАКТИРОВАТЬ: в качестве альтернативы, вы могли бы реализовать stop()
на перетаскиваемом:
$( "#table #food li.corn" ).draggable({
revert: "invalid",
hoverClass: "ui-state-active",
stop: function( event, ui ) {
$( "#cornDialog" ).dialog( "open" );
return false;
}
});
Комментарии:
1. однако вот в чем проблема: у меня есть ряд других перетаскиваемых элементов, каждый из которых должен иметь свое собственное диалоговое окно при удалении. Следовало бы упомянуть об этом!
2. Я тоже думал об этом, но это могло бы обмануть, даже если бы кто-то отпустил перетаскивание из определенной области перетаскивания. Мне нужно, чтобы модал всплывал, как только он фактически будет удален в «удаляемую» область
3. В функции перетаскивания droppable вы можете посмотреть на ui.draggable и решить, какое диалоговое окно показывать на основе этого. Может быть, на основе имени класса?
4. ммм …. Думаю, я понял. Нужен быстрый пример? Вы имеете в виду оператор like и ‘if’?
5. ДА.
if (ui.draggable.hasClass('someClass')) { //show dialog }
Ответ №2:
Вы хотите поместить свой диалоговый код в сбрасываемый обратный вызов drop, вот так
$( "#table #food li.corn" ).draggable({
revert: "invalid",
hoverClass: "ui-state-active",
drop: function( event, ui ) {
$( "#cornDialog" ).dialog( "open" );
return false;
}
});
$( "#plate ul" ).droppable({
hoverClass: "ui-state-active",
drop: function( event, ui ) {
$(this).addClass( "ui-state-highlight" );
$( "#cornDialog" ).dialog({
autoOpen: false,
show: "blind",
hide: "slow"
});
}
});
Комментарии:
1. Привет, спасибо, Кайл — я пробовал это. Ошибок firebug нет, но модальный по-прежнему не открывается для меня : (