2010-10-14 4 views
0

Comment puis-je ajouter un bouton de fermeture à un div déplaçable/redimensionnable? Je comprends que je suis essentiellement en train de décrire un dialogue, mais je dois pouvoir profiter de quelques-unes des propriétés de redimensionnable/draggable (comme le confinement) qui ne font pas partie de la boîte de dialogue.jQuery: Ajouter le bouton ui-close pour redimensionner/draggable?

Des idées?

+0

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

+0

Oui, il peut être ouvert, un bouton sur la page clone une boîte redimensionnable/draggable. – chris

+0

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

Répondre

0

Je pense que je peux avoir une solution: créer le dialogue à l'intérieur d'un iframe sur votre page. le dialogue sera contenu dans l'iframe et l'iframe est contenu dans un div ... et wha-la, le dialogue a "containment".

+0

a oublié de marquer cette réponse comme acceptée –

0

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é.

+0

Avez-vous annulé cette réponse comme étant acceptée? –

Questions connexes