2014-09-08 2 views
-1

Представьте себе довольно стандартную страницу веб-приложения с помощью jQuery и Knockout, которая использует в основном модальные диалоги для редактирования данных. Модальные диалоги создаются с помощью jQuery UI, и все работает. Когда страница загружается, JS запускается, диалоги открываются при нажатии кнопки, выполняют свою работу, все отлично, отлично и персико.лучший способ скрыть модальные элементы при загрузке страницы

Однако, поскольку страница загружается, элементы в div s, содержащие HTML-код для модальных элементов управления, будут мигать всего лишь секунду, прежде чем скрипт перевернет их в диалоги, после чего они снова будут скрыты до тех пор, пока диалог открывается. И да, это произойдет даже тогда, когда скрипт был завернут в вызов $(document).ready(), поскольку все, что это делает, предотвращает манипуляции до тех пор, пока DOM не будет загружен.

Один из методов, который, кажется, уходит, состоит в том, чтобы добавить visibility: hidden; в CSS класса, который я присваиваю своему модальному div, который останавливает форму элементов, появляющуюся при загрузке страницы, но затем также превращает эти элементы внутри модального управлять невидимыми, и я должен добавить следующую строку в функцию, которая открывает его ...

$modal.css('visibility', 'visible'); 

Опять же, все это похоже на работу, но мне интересно, если кто-нибудь знает лучший способ эффективно скрыть все входы и выпадающие списки, а также текст внутри того, что станет модальным элементом управления загрузкой страницы, чем при воспроизведении с помощью CSS при открытии диалога.

+1

Поскольку диалоговое окно, скорее всего, изменит видимость (например, дисплей css), полезно использовать просто '#modal {display: none}' в вашем css - ее больше http://stackoverflow.com/questions/2513051/when-creating-a-dialog-with-jquery-how-do-i-hide-the-dialog-div – mplungjan

+0

Как насчет использования только CSS и установки 'display : none' для всех диалогов, которые нужно скрывать? – DRD

ответ

0

Добавить класс под названием спрятать в ваш файл css.

.hidden{ 
    display: none; 
} 

Это позволит вам повторно использовать этот класс для других элементов. Если вы используете загрузочный лоток для twitter, этот класс должен быть доступен: http://getbootstrap.com/css/#helper-classes-show-hide

+0

Я не хотел использовать 'display: none' из-за возможности дополнительного места внизу страницы. Но, похоже, он не появляется, когда страница загружается, когда я тестирую его, поэтому я думаю, что я просто не был настолько тщательным, как должен был тестировать с помощью jQuery UI. У меня уже был класс для всех моих модальных элементов управления, чтобы помочь установить стиль и поля для всех элементов, поэтому я просто добавил его туда. – gfish3000

Смежные вопросы