jQuery UI Layout
Подскажите, пожалуйста, как в примере http://layout.jquery-dev.net/demos/saved_state.html прочитать текущие сохраненные аттрибуты панелей (размер, статус) и вывести их на экран, напр. в центральной панели. Если можно конкретный код (что куда вставить), я новичок в javascript...
Чего-то у меня ничего не получается. |
var myLayout = $('body').layout(); var is_west_open = myLayout.state.west.isOpen; var north_size = myLayout.state.north.size; |
А как вывести значение этих переменных на экран?
В том примере вставляю так: var is_west_open = myCustomLayoutName.state.west.isOpen ; var north_size = myCustomLayoutName.state.north.size ; document.write( north_size ); Результат: 'myCustomLayoutName.state' - есть null или не является объектом |
Цитата:
alert( north_size ); в div с id="screen": document.getElementById('screen').innerHTML = north_size; |
var myLayout = $('body').layout(); var north_size = myLayout.state.north.size ; alert( north_size ); Результат в окне Undefined! Почемуже не выводится текущий размер панели? |
приведи код всей странички
|
ссылка в первом посте. Вставил только под body код выше.
|
Вот простейшая страница:
<html> <head> <script src="js/jquery.js"></script> <script src="js/jquery.layout.js"></script> <script src="js/jquery.layout.state.js"></script> <script> $(document).ready(function () { $('body').layout({ applyDefaultStyles: true }); }); </script> </head> <body> <div class="ui-layout-center">Center <script> // init instance var var myLayout = $('body').layout(); // read layout 'options' var is_west_resizable = myLayout.options.west.resizable; var north_maxHeight = myLayout.options.north.maxSize; var state = myLayout.state; // get layout 'state' var is_west_open = myLayout.state.west.isOpen; var north_size = myLayout.state.north.size; // current state var isWestPaneOpen = !state.west.isClosed; var isSouthPaneHidden = state.south.isHidden; var isEastPaneSliding = state.east.isSliding; // current dimensions var westCurrentSize = state.west.size; var westMinimumSize = state.west.minSize; var containerInnerWidth = state.container.innerWidth; var containerPaddingLeft = state.container.paddingLeft; alert ( north_size ); </script> </div> <div class="ui-layout-north">North</div> <div class="ui-layout-south">South</div> <div class="ui-layout-east">East</div> <div class="ui-layout-west">West</div> </body> </html> Результат тот же - Undefined! В чем ошибка? Нормально выводятся только layout options. |
Разобрался в вопросе, переговорив с автором. Может кому поможет...
Оказывается панели layout должны уже существовать с соответствующими присвоенными классами до инициализации, напр. в виде div'ов или iframe и др. Они не создаются автоматически при инициализации. Вот такой код работает: <html> <head> <script src="js/jquery.js"></script> <script src="js/jquery.layout.js"></script> <script src="js/jquery.layout.state.js"></script> <script src="js/complex.js"></script> <script> $(document).ready(function () { $('body').layout({ applyDefaultStyles: true }); }); </script> </head> <body> <div class="ui-layout-center">Center <div id="screen"> </div> </div> <div class="ui-layout-north">North</div> <div class="ui-layout-south">South</div> <div class="ui-layout-east">East</div> <div class="ui-layout-west">West</div> <script> // init instance var var myLayout = $('body').layout(); var state = myLayout.state; // current dimensions var westCurrentSize = state.west.size; //debugData( myLayout.state.west, 'West State' ); document.getElementById('screen').innerHTML = westCurrentSize; </script> </body> </html> Для отладки есть удобная функция в complex.js, которая показывает состояние всех объектов и их параметров debugData( object[.branch[.branch]] [, dialog-title] ); напр. debugData( myLayout.state.west, 'West State' ); debugData( myLayout.state, 'ALLStates' ); |
firebug намного удобнее ;)
|
Часовой пояс GMT +3, время: 11:33. |