JQuery UI диалог перетаскивается на весь диалог, а не только заголовок - PullRequest
3 голосов
/ 20 июня 2011

В настоящее время диалоговое окно jquery ui можно перетаскивать только на панели заголовков

Какой рекомендуемый способ сделать диалоговое окно jquery ui перетаскиваемым всем диалогом, а не только заголовком?

Я только что сделал

elem.dialog({draggable: false}).draggable()

Что-то не так с этим?

Ответы [ 2 ]

14 голосов
/ 25 июня 2011

Ну, elem.dialog({draggable: false}).draggable(); не сработает, потому что, как говорили другие ответы, это не тот элемент. Тем не менее, это будет работать:

    elem.dialog({draggable: false}).parent().draggable();

Я думаю, что это лучший вариант, чем возиться с внутренностями jquery.

5 голосов
/ 20 июня 2011

В настоящее время jQueryUI предотвращает перетаскивание содержимого с помощью этого кода:

self.uiDialog.draggable({
    cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
    handle: ".ui-dialog-titlebar",
     ...
});

Итак, для внесения необходимых изменений вам нужно получить доступ к этому внутреннему uiDialog объекту и изменить его настройки.

Если dlg ваш объект содержимого диалога:

$(dlg).data('dialog').uiDialog.draggable('option', {
    cancel: '.ui-dialog-titlebar-close',
    handle: '.ui-dialog-titlebar, .ui-dialog-content'
})

будет работать.

Обратите внимание, что это работает с внутренними компонентами jQueryUI и может сломаться, если эти внутренние компоненты будут изменены будущими обновлениями.

...