2010-11-12 2 views
1

У меня есть javascript, помещенный внутри функции jquery $ (document) .ready. Он ищет привязку в URL-адресе, а затем запускает отдельную функцию для отображения соответствующего содержимого.Функция jquery ready не выполняется

Код выполняется, если я где-то помещаю предупреждение внутри инструкции if, но не выполняю иначе. Я сохранил все имена привязок в массиве с именем «anchorNameList», и я проверяю, существует ли якорь в URL-адресе.

Я хочу, чтобы функция запускалась только на начальной странице, поэтому я установил значение по умолчанию «currentAnchor» на 1000 и изменил его на каждой итерации.

 if (currentAnchor == 1000 && document.location.hash.substring(1)) { 
     var checkForThisAnchor = document.location.hash.substring(1); 
     for (var j=0; j < anchorNameList.length; j++) { 
      if (anchorNameList[j] == checkForThisAnchor) { 
       expandMe(j); 
      } 
     } 
    } 
+0

если он работает, когда вы размещаете оповещение, есть некоторые вопросы времени. – kobe

+0

Является ли ваш сценарий сценария jQuery до или после вашего собственного тега сценария JS-файла? Это нужно прежде. –

+0

Сценарий jQuery вызывается в заголовке. Функция expandMe, которую я вызываю, определена выше функции готовности. По существу, порядок на странице: head -> (ссылка jQuery) body -> (функция expandMe, $ (document) .ready и включенное содержимое). Должен ли я изменить порядок? –

ответ

0

Я переключил событие onload из документа jQuery. Дошел до window.ready. Он работал должным образом примерно в 30% случаев, поэтому это определенно вопрос времени. Казалось, основная функция JavaScript на странице, которая извлекает элементы списка, работает медленно. Я просто переместил всю эту расширяющуюся функцию до конца этой функции поиска списка, поэтому она просто работает линейно.

0

По моему опыту, когда проблема JavaScript волшебно исправляет себя, добавив безвредное предупреждение() где источник проблемы, как правило, асинхронный запрос.

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