首页 > 解决方案 > Jquery UI .slider 不是一个函数

问题描述

在我的 Laravel 项目中,我试图包含来自 jQueryUI 的范围滑块,但是我不断收到错误消息。我包括 jQuery 和 jQueryUI。如果我检查检查器中的来源,则两个文件都已加载。

<head>
...
        <!-- Styles -->
        <link href="{{asset('css/app.css')}}" type="text/css" rel="stylesheet"/>
        <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
        <!-- Scripts -->
        <script
            src="https://code.jquery.com/jquery-3.4.1.min.js"
            integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
            crossorigin="anonymous"></script>
        <script
            src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"
            integrity="sha256-0YPKAwZP7Mp3ALMRVB2i8GXeEndvCq3eSl/WsAl1Ryk="
            crossorigin="anonymous"></script>
        <script>
            $(document).ready(function () {
                var outputSpan = $('#spanOutput');
                var sliderDiv = $('#slider');

                sliderDiv.slider({
                    range: true,
                    min: 18,
                    max: 100,
                    values: [20, 30],
                    slide: function (event, ui) {
                        outputSpan.html(ui.values[0] + ' - ' + ui.values[1] + ' Years');
                    },
                    stop: function (event, ui) {
                        $('#txtMinAge').val(ui.values[0]);
                        $('#txtMaxAge').val(ui.values[1]);
                    }
                });

                outputSpan.html(sliderDiv.slider('values', 0) + ' - '
                    + sliderDiv.slider('values', 1) + ' Years');
                $('#txtMinAge').val(sliderDiv.slider('values', 0));
                $('#txtMaxAge').val(sliderDiv.slider('values', 1));
            });
        </script>
        <script src="{{asset('js/app.js')}}" defer type="text/javascript"></script>
        <script src="{{asset('js/myScripts.js')}}" defer type="text/javascript"></script>
    </head>
    <body>
        <div id="app">
            @include('includes.sidebar')
            @include('includes.search')
            @include('includes.faq')
            @yield('content')
            @include('includes.subscribe')
        </div>
    </body>

我得到的警告是:

>jQuery.Deferred exception: sliderDiv.slider is not a function TypeError: sliderDiv.slider is not a function  
        at HTMLDocument.<anonymous> (http://127.0.0.1:8000/:29:27)  
        at e (https://code.jquery.com/jquery-3.4.1.min.js:2:29453)  
        at t (https://code.jquery.com/jquery-3.4.1.min.js:2:29755) 
  undefined

我得到的错误是:

>Uncaught TypeError: sliderDiv.slider is not a function  
        at HTMLDocument.<anonymous> ((index):29)  
        at e (jquery-3.4.1.min.js:2)   
        at t (jquery-3.4.1.min.js:2) 

标签: jquerylaraveljquery-ui

解决方案


与我的 app.js 文件存在冲突,该文件只有一行包含引导 javascript。最终通过 CDN 包含引导 javascript。

  <!-- Styles -->
            <link href="{{asset('css/app.css')}}" type="text/css" rel="stylesheet"/>
            <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
        <!-- Scripts -->
        <script
            src="https://code.jquery.com/jquery-3.4.1.min.js"
            integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
            crossorigin="anonymous"></script>
        <script
            src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"
            integrity="sha256-0YPKAwZP7Mp3ALMRVB2i8GXeEndvCq3eSl/WsAl1Ryk="
            crossorigin="anonymous"></script>
        <script>
            // setTimeout(function() {
                $(document).ready(function () {
                var outputSpan = $('#spanOutput');
                var sliderDiv = $('#slider');

                sliderDiv.slider({
                    range: true,
                    min: 18,
                    max: 100,
                    values: [20, 30],
                    slide: function (event, ui) {
                        outputSpan.html(ui.values[0] + ' - ' + ui.values[1] + ' Years');
                    },
                    stop: function (event, ui) {
                        $('#txtMinAge').val(ui.values[0]);
                        $('#txtMaxAge').val(ui.values[1]);
                    }
                });

                outputSpan.html(sliderDiv.slider('values', 0) + ' - '
                    + sliderDiv.slider('values', 1) + ' Years');
                $('#txtMinAge').val(sliderDiv.slider('values', 0));
                $('#txtMaxAge').val(sliderDiv.slider('values', 1));
            });
            // }, 10000);
        </script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
        <script src="{{asset('js/myScripts.js')}}" defer type="text/javascript"></script>

推荐阅读