Используя Labjs, я получаю сообщение об ошибке "$ is notfined", но js все еще работает, не знаю почему:(

Я использую LABjs для некоторых параллельных JS загрузки совершенства.

Но, по какой-то странной причине, я получаю сообщение об ошибке в консоли отладки "$ is notfined".

Мой код выглядит следующим образом:

<script>
$LAB.script("http://use.typekit.com/blah.js").script("/assets/js/libs/jquery-1.5.1.min.js").script("/assets/js/libs/basic-jquery-slider.min.js").wait().script("/assets/js/libs/modernizr-1.7.min.js").script("/assets/js/libs/jquery.watermarkinput.js").wait().script("/assets/js/libs/jquery-ui-1.8.14.custom.min.js").wait().script("/assets/js/effects.js").wait(function(){});

И в моих эффектах. JS у меня есть.

try{Typekit.load();}catch(e){}
$('#banner').bjqs({
'width' : 980,
'height' : 212,
'showMarkers' : false,
'showControls' : false,
'centerMarkers' : false
});

Все работает, но я получаю вышеупомянутую ошибку. Я не понимаю, почему, объект jquery должен быть (и должен быть, как все работает), так почему ошибка?

Есть идеи? Я уверен, что я использую labjs правильно, но я думаю, что эта ошибка расстраивает IE7:(

Я, вероятно, должен был бы добавить $(document). Уже вокруг последнего кода? но это, кажется, расстраивает labjs.

Спасибо за любую помощь заранее!

2 ответа

Решение

Я только что понял, что скрытый во включении в нижний колонтитул - это еще один вызов моего файла effect.js. Но это в обычных тегах сценария. Это объясняет, почему он работает с ошибкой, а затем работает так, как его вызывают дважды, один раз внутри labjs, а второй - нет. Что за идиот:(Спасибо, что попробовал хоть всех! И извините!

Попробуй это:

<script>
$LAB
.script("http://use.typekit.com/blah.js")
.script("/assets/js/libs/jquery-1.5.1.min.js").wait() // <---- ADD THIS .wait()
.script("/assets/js/libs/basic-jquery-slider.min.js").wait()
.script("/assets/js/libs/modernizr-1.7.min.js")
.script("/assets/js/libs/jquery.watermarkinput.js").wait()
.script("/assets/js/libs/jquery-ui-1.8.14.custom.min.js").wait()
.script("/assets/js/effects.js").wait(function(){});
</script>

Некоторые другие заметки:

  1. Удалите эту последнюю пустую функцию /noop .wait(), она больше не нужна.
  2. Modernizr не должен быть загружен LABjs... вы должны загрузить это в соответствии с документами, которые IIRC говорит, что он должен быть в нормальном <script> тег в верхней части вашего документа.
  3. Я думаю, что некоторые из .wait() Тут у вас в этой цепочке нет необходимости. Например, я думаю, что они не нужны после "jquery-slider" и "jquery-watermark" script() вызовы, так как я держу пари, что они не зависят друг от друга и, следовательно, могут выполняться в любом порядке ASAP по отношению друг к другу, если только они завершили выполнение после завершения jQuery (вот почему я сделал комментарий во фрагменте к добавить в .wait() вызов!)
Другие вопросы по тегам