События до $ (документ) .ready - PullRequest
14 голосов
/ 20 августа 2011

У меня есть функция, чтобы условно скрыть элементы управления перед загрузкой документа. Если я включу эту функцию в $(document).ready, я увижу страницу, мерцающую, чтобы условно скрыть элементы управления. Я хотел бы знать, есть ли событие, которое можно вызвать до того, как $(document).ready сработает.

Ответы [ 6 ]

6 голосов
/ 20 августа 2011

Как уже упоминалось, делайте что-то подобное

<div id="test" class="hidden"> my hidden div tag </div>

.hidden
{
 display:none;   
}

в документе. Вы можете показать, что это эквивалентно onload, ожидающему загрузки html

$(document).ready(function() {
  $('#test').show();
});

Пример jsfiddle здесь

http://jsfiddle.net/kdpAr/

6 голосов
/ 20 августа 2011

Общая проблема.Используйте CSS, чтобы скрыть элементы управления по умолчанию, а затем используйте JS при $(document).ready, чтобы решить, какие элементы управления сделать видимыми.Там не будет мерцания.Это будет выглядеть так, будто соответствующие части страницы загружаются постепенно.

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

Самый простой способ сделать это - просто установить общий класс на всединамические элементы:

<div id="myControl1" class="initiallyHidden"></div>

и используйте CSS, чтобы убедиться, что все они скрыты:

.initiallyHidden {display: none;}

И тогда ваш javascript переопределит это, когда решит, что элемент должен быть видимым:

document.getElementById("myControl1").style.display = "block";
1 голос
/ 20 августа 2011

вызвать функцию JavaScript рядом с элементом HTML

например:

<span></span>
<script> call JS function</script>
1 голос
/ 20 августа 2011

Когда мне нужно было что-то скрыть перед загрузкой Javascript, я бы сделал это скрытым в css, например:

 display:none;

или:

 visibility: hidden;

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

0 голосов
/ 20 августа 2011

Вы должны поместить свои элементы ДО запуска своего javascript

<div>hi</div>
<script>
$("div").css('background-color', '#EEE');
</script>

http://sandbox.phpcode.eu/g/d01a1

0 голосов
/ 20 августа 2011

Вы можете просто открыть тег сценария сразу после HTML-кода, который вы хотите скрыть condionnaly (однако jQuery должен быть объявлен раньше), а затем вызвать метод hide напрямую, а не внутри $ (document). Уже так:

<div id="toHide">Lorem ipsum</div>

<script type="text/javascript">
  $("#toHide").hide();
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...