Почему имеет значение, где я включаю файл сценария jQuery?
На моей главной странице (для всех страниц моего сайта) у меня есть ToolkitScriptManager.
На моей странице контента есть ряд гиперссылок и разделителей для разборной функциональности.
Код для отображения / скрытия панелей работает следующим образом:
$(document).ready(function() {
// Hookup event handlers and execute HTML DOM-related code
$('#nameHyperLink').click(function() {
var div = $('#nameDiv');
var link = $('#nameHyperLink');
if (div.css('display') == 'none') {
link.text('Hide Data');
div.show('100');
}
else {
link.text('Show Data');
div.hide('100');
}
});
});
Если я включаю ScriptReference в файл jQuery 1.4.2 в toolkitscriptmanager, код javascript выполняется неправильно на странице (изменяется только текст для гиперссылки, div на самом деле не отображается.) Однако, если я этого не сделаю включите файл jQuery в ToolkitScriptManager и вместо этого включите его в страницу содержимого, он работает правильно.
Я новичок в Javascript/jQuery, и это не имеет никакого смысла. Что тут происходит?
2 ответа
Положение сценария включения важно для ссылки jQuery. Если вы посмотрите на ваш сгенерированный источник, я бы поспорил, что тег находится ниже функции script (). Вы должны убедиться, что ссылка на jQuery появляется как можно раньше в источнике страницы.
Попробуйте переместить ссылку на библиотеку jQuery в начало главной страницы, это должно сработать. В противном случае опубликовать какой-либо источник!
Как говорит Tj... вероятно, должно быть в разделе заголовка вашей главной страницы. Кроме того, приятно ссылаться на версию этой библиотеки от Google, так как есть вероятность, что ваши пользователи уже ее кэшируют. Например, посмотрите на источник для этой самой страницы.
Здесь две наиболее вероятные причины: $ еще не определено (см. Ответ Tj) и $ определяется другой библиотекой, такой как прототип.
Я настоятельно рекомендую вам изучить JavaScript-отладчик Firebug или, по крайней мере, взглянуть на встроенную в Firefox консоль ошибок (Tools -> Error console). Это даст вам гораздо лучшую подсказку о том, что происходит, кроме "это не работает".