Почему имеет значение, где я включаю файл сценария jQuery? - PullRequest
1 голос
/ 11 мая 2010

На моей главной странице (для всех страниц моего сайта) у меня есть 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 ]

2 голосов
/ 12 мая 2010

Положение сценария включения важно для ссылки jQuery. Если вы посмотрите на ваш сгенерированный источник, я бы поспорил, что тег находится ниже функции скрипта (). Вы должны убедиться, что ссылка на jQuery появляется как можно раньше в источнике страницы.

Попробуйте переместить ссылку на библиотеку jQuery в начало главной страницы, это должно сработать. В противном случае выложите какой-нибудь источник!

0 голосов
/ 12 мая 2010

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

Две наиболее вероятные причины: $ еще не определено (см. Ответ Tj) и $ определяется другой библиотекой, такой как прототип.

Я бы настоятельно рекомендовал вам изучить использование отладчика javascript в Firebug или хотя бы взглянуть на встроенную в Firefox консоль ошибок (Tools -> Error console). Это даст вам гораздо лучшую подсказку о том, что происходит, кроме «это не работает».

...