2010-03-11 19 views
11

ich das jQuery UI Akkordeon-Modul:JQUERY UI Akkordeon Größe bei Fenstergröße ändern?

<script type="text/javascript"> 
$(function() { 
    $("#sidebar_column_accordion").accordion({ 
     fillSpace: true, 
     icons: { 'header': 'ui-icon-plus', 'headerSelected': 'ui-icon-minus' } 
    }); 
}); 
</script> 

Durch die fillSpace Option nimmt das Akkordeon über die gesamte Höhe des Fensters nach oben, die ich will. Problem ist es, die Höhe beim Laden der Seite zu berechnen, und wenn der Benutzer die Größe des Browsers ändert, wird nicht angepasst ...

Gibt es eine Möglichkeit, das Akkordeon die Höhe/Größe neu berechnen, wenn das Browserfenster die Größe ändert?

Dank

Antwort

18
$(window).resize(function(){ 
    $("#sidebar_column_accordion").accordion("resize"); 
}); 

In jQuery UI 1.9 die Resize-Methode entfernt wurde. Die Refresh-Methode wurde hinzugefügt, die robuster ist und auch in diesem Fall funktioniert.

$(window).resize(function(){ 
    $("#sidebar_column_accordion").accordion("refresh"); 
}); 
+0

Das scheint viel zu einfach! Ich werde das heute Abend versuchen und zurückkommen. thxs – AnApprentice

+0

Haben Sie das irgendwo auf einem Dokument gefunden? Ich kann das nirgendwo finden? – AnApprentice

+0

Sieht nicht so aus, als hätte die Dokumentation es gezeigt, aber die Demo-Quelle zeigt den Benutzer der Größenänderungsmethode für das Akkordeon. http://jqueryui.com/demos/accordion/#fillspace – PetersenDidIt

4

Es sieht wie folgt aus wurde aktualisiert, um "refresh"

$(function() { 
$("#accordion").accordion({ 
heightStyle: "fill" 
}); 
}); 
$(function() { 
$("#accordion-resizer").resizable({ 
minHeight: 140, 
minWidth: 200, 
resize: function() { 
$("#accordion").accordion("refresh"); 
} 
}); 
}); 
0

Set Autoheight: 'Inhalt' im Akkordeon decalaration.

$('#accordion').accordion({ 
    autoHeight: 'content' 
}); 

Sehen Sie hier für weitere Informationen: Das wird die div die native Höhe des Inhalts verwenden, machen http://jqueryui.com/accordion/#no-auto-height

0

Die anderen Lösungen gepostet hat bei mir nicht funktioniert, obwohl sie in der Nähe waren.

Definieren Sie Ihr Akkordeon mit heightStyle: füllen, etwa so:

$("#sidebar_column_accordion").accordion({ 
        heightStyle: "fill" 
       }); 

Erstellen Sie eine Funktion zu berechnen und die Höhe einzustellen. Beachte, dass ich beides machen musste, stelle die Höhe ein und rufe dann das Akkordeon auf. Ohne den anderen geht es nicht.

function calculateHeight(){ 
    var height = $('#maincontent').height(); // Or whatever height you want 
    $('#sidebar_column_accordion').height(height); 
    $('#sidebar_column_accordion').accordion("refresh"); 
} 

Rufen Sie diese Funktion sowohl beim Laden der Seite als auch beim Ändern der Fenstergröße auf.

calculateHeight(); 

$(window).resize(function() { 
    calculateHeight(); 
}); 
Verwandte Themen