Вкладки jqgrid и jquery: загрузка текста не скрывает
Я использую вкладки пользовательского интерфейса jquery (1.8.9), и у меня есть несколько вкладок на моей веб-странице.
На каждой вкладке у меня есть jqGrid 3.8.2, который загружает данные JSON при загрузке страницы.
На первой вкладке все в порядке, я вижу желтую рамку "Загрузка" из jqGrid, и она исчезает. Но проблема в том, что, когда я перехожу на другую вкладку, я вижу загруженный jqGrid, но у меня есть небольшой loadui из JQGrid, который все еще появляется на всех jqgrid скрытых вкладок. Обновление скрывает это..
Это ошибка? что я могу исправить? или есть способ скрыть это, когда я меняю вкладку? (Я пытался скрыть $(".loading"), когда я меняю вкладку, но это не работает..
Хммм одна деталь: он делает это только в IE7, а не в Firefox и Chrome.
Спасибо
2 ответа
jqGrid использует до двух делений, чтобы показать обработку загрузки. если loadui
имеет значение по умолчанию 'enable'
один div с идентификатором, имеющим префикс load_
используются. Если вы используете loadui
равный 'block'
дополнительный оверлейный элемент с префиксом id lui_
используются.
Например, если вы используете <table>
с id="list"
идентификаторы div, которые будут использоваться при загрузке данных 'load_list'
и дополнительно 'lui_list'
(если loadui:'block'
). Дополнительно во время загрузки сетки другой параметр сетки $("#list")[0].grid.hDiv.loading
будет установлен в true
во время загрузки сетки.
Таким образом, вы можете реализовать внутри обработчика события select вкладок пользовательского интерфейса jQuery, скрывающих и показывающих загрузочные делители. Дополнительно вы можете проверить $("#grid_id")[0].grid.hDiv.loading
чтобы убедиться, что сетка действительно находится в состоянии загрузки.
Вы можете прочитать больше о загрузочных погружениях, используемых jqGrid здесь.
Это происходит потому, что в IE, если элемент находится в скрытом элементе, он не будет скрывать его должным образом. Я не уверен, что все версии это влияет, но определенно 6 и 7.
Как бы то ни было, исправление, которое я нашел, заключается в том, чтобы скрыть вкладки пользовательского интерфейса jQuery, переместившись за пределы экрана, а не установив видимость ни одного.
Это делается путем изменения CSS для класса ui-tabs-hide. Добавьте следующее в CSS на странице, которая включает ваши вкладки
.ui-tabs .ui-tabs-hide
{
display: block !important;
position:absolute;
left: -99999px;
top: 0;
}
Первые вкладки.ui можно изменить на более конкретный селектор.
В любом случае, после смены загрузочные коробки должны исчезнуть, как задумано.