Javascript не загружен в правильном порядке?

0

У меня есть веб-страница, где я загружаю некоторые файлы javascript в заголовке. Некоторые подстраницы будут загружать дополнительные файлы javascript. На главной странице все работает отлично, но на подстранице я получаю много таких исключений:

Uncaught TypeError: свойство '$' объекта [object Object] не является функцией

Я вижу, что это исключение встречается в details.js, voteHandler.js и 4 раза на самой HTML-странице. Исключение всегда вызывается в этой строке:

$("document").ready(function () {

Вот как выглядит основная страница:

<head>
        <script type="text/javascript" src=/Scripts/jquery-1.7.1.min.js></script>
        <script type="text/javascript">
            //URL for voting
            var _postVoteUrl = 'http://localhost:5215/Post/Vote'
            //URL for tags
            var _tagsUrl = 'http://localhost:5215/Post/Tags'

            //Keep track of if a cascading is loading, if so, cancel submits
            var cascadingControlLoading = false;
            window.latestClick = '';

            function IsNotDblClick(objectID) {
                if (window.latestClick != objectID &&
                    !cascadingControlLoading) {
                    window.latestClick = objectID;
                    return true;
                } else {
                    return false;
                }
            }

            $(document).ready(function () {
                if($('#rightCon').text().trim().length < 1)
                {$('#rightCon').hide();}
            });

        </script>
        <script type="text/javascript" src=/Scripts/jquery-ui-1.8.20.min.js>"></script>
        <script type="text/javascript" src=/Scripts/jquery.elastic.source.js></script>
        <script type="text/javascript" src=/Scripts/jquery.validate.min.js></script>
        <script type="text/javascript" src=/Scripts/jquery.validate.unobtrusive.min.js></script>
        <script type="text/javascript" src=/Scripts/jquery.qtip.min.js></script>  
        <script type="text/javascript" src=/Scripts/formhandler.js></script>
        <script type="text/javascript" src=/Scripts/taghandler.js></script>
        <script src="/Scripts/voteHandler.js"></script>
        <script type="text/javascript" src=/Scripts/select2.min.js %>"></script>

    <script>
        function TogglePostCon() {
            $('#postListEditorCon').toggle();
        }


        SetupTagTextBox("txtTagBox", false);
        SetupTagTextBoxPersonalTag("txtPersonalTagBox", true);
        SetupTagTextBoxPersonalTag("txtPersonalIgnoreTagBox", true);
    </script>

        <script src="/Scripts/modernizr-2.5.3.js"></script>
    </head>

И это подстраница, которая исключает исключения:

    <head>
            <script type="text/javascript" src=/Scripts/jquery-1.7.1.min.js></script>
            <script type="text/javascript">
                //URL for voting
                var _postVoteUrl = 'http://localhost:5215/Post/Vote'
                //URL for tags
                var _tagsUrl = 'http://localhost:5215/Post/Tags'

                //Keep track of if a cascading is loading, if so, cancel submits
                var cascadingControlLoading = false;
                window.latestClick = '';

                function IsNotDblClick(objectID) {
                    if (window.latestClick != objectID &&
                        !cascadingControlLoading) {
                        window.latestClick = objectID;
                        return true;
                    } else {
                        return false;
                    }
                }

                $(document).ready(function () {
                    if($('#rightCon').text().trim().length < 1)
                    {$('#rightCon').hide();}
                });
            </script>
            <script type="text/javascript" src=/Scripts/jquery-ui-1.8.20.min.js>"></script>
            <script type="text/javascript" src=/Scripts/jquery.elastic.source.js></script>
            <script type="text/javascript" src=/Scripts/jquery.validate.min.js></script>
            <script type="text/javascript" src=/Scripts/jquery.validate.unobtrusive.min.js></script>
            <script type="text/javascript" src=/Scripts/jquery.qtip.min.js></script>  
            <script type="text/javascript" src=/Scripts/formhandler.js></script>
            <script type="text/javascript" src=/Scripts/taghandler.js></script>
            <script src="/Scripts/details.js"></script>
            <script src="/Scripts/voteHandler.js"></script>
       <script>
$(function () {

                //Google +1
                $.getScript("http://apis.google.com/js/plusone.js", null, true);

                //Twitter
                $.getScript("http://platform.twitter.com/widgets.js", null, true);

                //Facebook
                $.getScript("http://connect.facebook.net/en_US/all.js#xfbml=1", function () {

                    $('body').append('<div id="fb-root"></div>');

                    FB.init({ status: true, cookie: true, xfbml: true });

                }, true);
            });
    </script>

        <script src="/Scripts/modernizr-2.5.3.js"></script>
    </head>

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

Итак, почему моя подстраница генерирует эти исключения?

Теги:

1 ответ

0
Лучший ответ

В режиме "неконфликтный" $ shortcut недоступен и используется более длинный jQuery, т.е.

jQuery(document).ready(function ($) {

Включив в круглые скобки $ после вызова функции, вы можете использовать этот ярлык внутри блока кода.

Заменить код

$(document).ready(function () {
                    if($('#rightCon').text().trim().length < 1)
                    {$('#rightCon').hide();}
                });

с этим

jQuery(document).ready(function ($) {
                    if($('#rightCon').text().trim().length < 1)
                    {$('#rightCon').hide();}
                });
  • 0
    noConflict() может быть правильной, но в этом вопросе не упоминается WordPress.
  • 0
    Это не веб-страница WordPress? Это все еще применяется?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню