2010-01-16 3 views
15

Desidero posizionare la mia finestra di dialogo xQuery x-pixel lontano dal bordo destro del browser. È comunque possibile?Posizionamento finestra di dialogo jQuery

http://jqueryui.com/demos/dialog/

L'opzione posizione non sembra avere quel tipo di messa a punto, ma c'è qualche altro modo per farlo?

+1

+1 Cercate ovunque! – Nathan

+0

possibile duplicato di [posizionamento della finestra dell'interfaccia utente jQuery] (http://stackoverflow.com/questions/744554/jquery-ui-dialog-positioning) – bummi

risposta

8

Se fate la vostra finestra di dialogo position:absolute, allora la sua presa su della normale flusso della pagina, ed è possibile utilizzare la proprietà left e top per posizionarlo in qualsiasi punto della pagina.

$('.selector').dialog({ dialogClass: 'myPosition' }); 

e definire la classe css myPosition come:

.myPosition { 
    position: absolute; 
    right: 200px; /* use a length or percentage */ 
} 

È possibile impostare il top, left, right e bottomproperties per myPosition utilizzando una lunghezza tale in pixel o in percentuale.

+4

Non dimenticare che lo posizionerà rispetto al primo elemento genitore la cui posizione è specificato. Se nessuno viene trovato, viene posizionato rispetto al tag del corpo. Pertanto, per una finestra di dialogo come questa, è importante aggiungerla sempre al tag del corpo. –

3

un'occhiata qui: http://jqueryui.com/demos/dialog/#option-position

inizializzare una finestra di dialogo con l'opzione posizione specificata.

$('.selector').dialog({ position: 'top' }); 

Ottenere o impostare l'opzione di posizione, dopo init.

//getter 
var position = $('.selector').dialog('option', 'position'); 
//setter 
$('.selector').dialog('option', 'position', 'top'); 
16

questo mantiene dialogo div in posizione fissa

questo funziona per me in IE FF Chrome e Safari

jQuery("#dialogDiv").dialog({ 
    autoOpen: false, 
    draggable: true, 
    resizable: false, 
    height: 'auto', 
    width: 500, 
    modal: false, 
    open: function(event, ui) { 
     $(event.target).parent().css('position', 'fixed'); 
     $(event.target).parent().css('top', '5px'); 
     $(event.target).parent().css('left', '10px'); 
    } 

}); 

quando si desidera finestra di dialogo aperta basta chiamare

$('#dialogDiv').dialog('open'); 
+0

+1 questo ha funzionato meglio per me, perché ho bisogno di essere in grado di spostare il modulo in giro. Impostare la posizione con una classe CSS lo rende congelato. – Nathan

2

Questo ha funzionato per per visualizzare la finestra di dialogo nell'angolo in alto a destra con offset 10 px: position: "right-10 top+10":

$("#my-dialog").dialog({ 
    resizable: false, 
    height:"auto", 
    width:350, 
    autoOpen: false, 
    position: "right-10 top+10" 
}); 
0

Per fissare in posizione centrale, io uso:

open : function() { 
    var t = $(this).parent(), w = window; 
    t.offset({ 
     top: (w.height()/2) - (t.height()/2), 
     left: (w.width()/2) - (t.width()/2) 
    }); 
} 
5

La maggior parte di queste risposte sembravano essere soluzioni alternative per me, e volevo trovare il modo jQuery ufficiale per farlo. Dopo la lettura attraverso le .position() documenti, ho scoperto che si può effettivamente essere fatto nel inizializzazione del widget di jQuery:

$("#dialog").dialog({ 
    title:title, 
    position:{my:"right top",at:"right+100 top+100", of:"body"}, 
    width:width, 
    height:height 
}) 

Qualora la 100 è la distanza dalla destra e dall'alto, rispettivamente

+0

Funziona alla grande. Questo è molto più semplice degli altri. –

2

con questo codice Potete specificare la vostra posizione superiore e sinistra:

$('#select_bezeh_window').dialog({ 
    modal:true, 
    resizable:false, 
     draggable:false, 
     width:40+'%', 
     height:500 , 
     position:{ 
      using: function(pos) { 
       $(this).css("top", 10+'px'); 
       $(this).css("left", 32+'%'); 
      } 
     } 
}); 
+0

Forse spiegare * perché * funziona? –

+0

dove del codice vuoi spiegare? –