Une meilleure solution, remplacer l'option de confinement dans le noyau de ui:
_makeDraggable: function() {
var self = this,
options = this.options,
heightBeforeDrag;
this.uiDialog.draggable({
cancel: '.ui-dialog-content',
handle: '.ui-dialog-titlebar',
containment: 'document', //override this HARD CODED option
start: function() {
heightBeforeDrag = options.height;
$(this).height($(this).height()).addClass("ui-dialog-dragging");
(options.dragStart && options.dragStart.apply(self.element[0], arguments));
},
drag: function() {
(options.drag && options.drag.apply(self.element[0], arguments));
},
stop: function() {
$(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag);
(options.dragStop && options.dragStop.apply(self.element[0], arguments));
$.ui.dialog.overlay.resize();
}
});
je ne peux pas croire que les développeurs codés dur ce lieu de prévoir la possibilité de confinement. C'est complètement retardé.
Eh bien, si c'est quelque chose qui peut être fermé, cela ne signifie-t-il pas qu'il peut être ouvert? Si c'est le cas, en quoi cela diffère-t-il d'un dialogue redimensionnable et déplaçable? – Pointy
Oui, il peut être ouvert, un bouton sur la page clone une boîte redimensionnable/draggable. – chris
Je suppose que ce que je dis est que j'ai essentiellement besoin d'un dialogue qui peut être contenu dans un div. La fonctionnalité par défaut d'une boîte de dialogue n'a pas de 'confinement'. Vous pourriez étendre la fonctionnalité de la boîte de dialogue oui, mais je me suis dit que cela prendrait moins de temps pour étendre mon redimensionnable/draggable pour avoir juste un bouton de fermeture. – chris