Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Объясните, почему так происходит (https://javascript.ru/forum/jquery/39767-obyasnite-pochemu-tak-proiskhodit.html)

ak-o 11.07.2013 11:37

Объясните, почему так происходит
 
Всем привет, есть вот такой код, скажем:

$(function() {
      var obj = {
           test: $('#menu')
      };
});

После загрузки страницы, obj.test равен объекту, но видимо что-то с ним не так, т.к работать с ним не получается.
Проблему решили следующим путем - сам файл, содержащий объекты такого вида, был перенесен в конец файла html перед закрывающим тегом </body>
И о чудо! все работает.
Если смотреть через консоль, то объекты чуточку отличаются друг от друга(при случае когда файл находится в HEAD и ближе к </body>)
Вопрос: почему так происходит,и с чем это может быть связанно?
Интересно узнать причину.Спасибо

рони 11.07.2013 11:41

Цитата:

Сообщение от ak-o
$('#menu')

картинки наверно содержит?

manhun1 11.07.2013 11:47

нет картинок там нет

ak-o 11.07.2013 11:51

код меню

<ul id="menu">
            <li class="menu-item menu-home" onclick="navigate('home')">
                <a href="#"></a>
            </li>
            <li class="menu-item menu-stock" onclick="navigate('stock')">
                <a href="#">акции</a>
            </li>
            <li class="menu-item menu-about" onclick="navigate('about')">
                <a href="#">о компании</a>
            </li>
            <li class="menu-item menu-installment" onclick="navigate('installment')">
                <a href="#">рассрочка</a>
            </li>
            <li class="menu-item menu-contact" onclick="navigate('contact')">
                <a href="#">контакты</a>
            </li>
            <li class="menu-item menu-item-clear"></li>
            <li class="menu-item menu-phone" onclick="navigate('contact')">
                <a href="#">+7 (495) 229 80 84</a>
            </li>
            <li class="menu-item menu-by" onclick="navigate('by')">
                <a href="#">
                    <img class="arrow" alt="" src="style/images/arrow.png" />
                    сделать заказ
                </a>
            </li>
</ul>

картинка есть, одна. в этом может быть проблема?

рони 11.07.2013 11:53

Цитата:

Сообщение от ak-o
Вопрос: почему так происходит,и с чем это может быть связанно?

потому что страница неполностью загружена

$(window).load(function () {
  // манипуляции с готовой страницей
});

рони 11.07.2013 11:53

Цитата:

Сообщение от ak-o
<img class="arrow" alt="" src="style/images/arrow.png" />

а вы говорили картинок нет

рони 11.07.2013 11:54

ak-o,
задайте размер картинке -- а желательно и всем картинкам на странице

ak-o 11.07.2013 12:00

Цитата:

Сообщение от рони (Сообщение 261731)
потому что страница неполностью загружена

$(window).load(function () {
  // манипуляции с готовой страницей
});

а $( document ).ready() не гарантирует полную загрузку страницы?
вроде $(function(){}) является аналогом doc.ready

danik.js 11.07.2013 12:11

является. Странно это. Прям мистика какая-то. Меню точно не генерируется скриптом? Консоль вам в помощь, видимо чего-то не учли.

ak-o 11.07.2013 12:18

Сами удивились такой штуке =) Нет, меню не генерируется.
сейчас занят, может ближе к концу дня выложу пример с этой мистикой

рони 11.07.2013 12:32

Цитата:

Сообщение от ak-o
$( document ).ready() не гарантирует полную загрузку страницы?

негарантирует!!!

ak-o 12.07.2013 12:00

Вложений: 1
Вчера не получилось.
Вот сайтик, обрезал его как мог,что бы лишнее не мешало.
Вынес этот код в документ.риди (ничего не работает\а работать должно так: меню поднимается к верху страницы при клике по нему)
var page_home = {
		name : 'home',
		menu : $('#menu'),
		title  : ' - Главная'
	};

Если перенести его вниз(за пределы док.риди) все работает.(наверно за счет того, что скрипт включается перед закрывающим body)
А теперь, самое интересное.
Возьмем строку 44 из index.html и переместим её в <Head> - ничего не работает.(при обоих вариантах расположения кода, хоть в док.риди хоть нет)
Именно этот эффект, я бы и хотел понять, почему нельзя работать с этим объектом, когда JS файл загружен в <Head> и Объект находится в Док.Риди.
Я думаю, что он должен был создаться после загрузки страницы, но когда мы тыкаем на меню, получаем ошибку
ReferenceError: page_home is not defined
-------------
К слову - мопед код не мой, я просто разместил объяву... :victory:

ak-o 12.07.2013 12:32

Цитата:

Сообщение от рони (Сообщение 261743)
негарантирует!!!

ой, не увидел...видимо в этом и есть проблема.будет время, буду пробовать, сейчас опять на работе+)


Часовой пояс GMT +3, время: 11:07.