Вкладки 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 можно изменить на более конкретный селектор.

В любом случае, после смены загрузочные коробки должны исчезнуть, как задумано.

Другие вопросы по тегам