javascript - "DataTable is not a function"$-issue/-conflict(jQuery 和新主题)

标签 javascript jquery function load datatables

自从换了一个新主题后,我遇到了一些问题,包括 DataTables 。 jQuery 只被调用一次并且被放置在正确的位置,所以基本上一切都是正确的。

我收到这样的消息

    TypeError: $(...).DataTable is not a function

    TypeError: $ is undefined

DataTables 下,我有一个带有 load() 和类似问题的不同 JS。我可以在放置它时修复它:

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

在此之前:

    $("#tmp").load("tmp.htm")

我在一些论坛上看到,占位符 $ 可能存在问题。无论如何,上面的部分解决了我的问题。但回到数据表。我认为这是同样的问题,但我无法理解这个问题。

我的表格开始于:

    $(document).ready(function() {              
    var tabelle = $('#mytable').DataTable( 

但是之前有了这个..

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

我只得到错误。有人可以帮帮我吗?

++++++++更新++++++++

<script type="text/javascript" language="javascript" class="init">

$.fn.dataTable.pipeline = function ( opts ) {
    // Configuration options
    var conf = $.extend( {
        pages: 5,     // number of pages to cache
        url: '',      // script url
        data: null,   // function or object with parameters to send to the server
                      // matching how `ajax.data` works in DataTables
        method: 'GET' // Ajax HTTP method
    }, opts );

    // Private variables for storing the cache
    var cacheLower = -1;
    var cacheUpper = null;
    var cacheLastRequest = null;
    var cacheLastJson = null;

    return function ( request, drawCallback, settings ) {
        var ajax          = false;
        var requestStart  = request.start;
        var requestLength = request.length;
        var requestEnd    = requestStart + requestLength;

        if ( settings.clearCache ) {
            // API requested that the cache be cleared
            ajax = true;
            settings.clearCache = false;
        }
        else if ( cacheLower < 0 || requestStart < cacheLower || requestEnd > cacheUpper ) {
            // outside cached data - need to make a request
            ajax = true;
        }
        else if ( JSON.stringify( request.order )   !== JSON.stringify( cacheLastRequest.order ) ||
                  JSON.stringify( request.columns ) !== JSON.stringify( cacheLastRequest.columns ) ||
                  JSON.stringify( request.search )  !== JSON.stringify( cacheLastRequest.search )
        ) {
            // properties changed (ordering, columns, searching)
            ajax = true;
        }

        // Store the request for checking next time around
        cacheLastRequest = $.extend( true, {}, request );

        if ( ajax ) {
            // Need data from the server
            if ( requestStart < cacheLower ) {
                requestStart = requestStart - (requestLength*(conf.pages-1));

                if ( requestStart < 0 ) {
                    requestStart = 0;
                }
            }

            cacheLower = requestStart;
            cacheUpper = requestStart + (requestLength * conf.pages);

            request.start = requestStart;
            request.length = requestLength*conf.pages;

            // Provide the same `data` options as DataTables.
            if ( $.isFunction ( conf.data ) ) {
                // As a function it is executed with the data object as an arg
                // for manipulation. If an object is returned, it is used as the
                // data object to submit
                var d = conf.data( request );
                if ( d ) {
                    $.extend( request, d );
                }
            }
            else if ( $.isPlainObject( conf.data ) ) {
                // As an object, the data given extends the default
                $.extend( request, conf.data );
            }

            settings.jqXHR = $.ajax( {
                "type":     conf.method,
                "url":      conf.url,
                "data":     request,
                "dataType": "json",
                "cache":    false,
                "success":  function ( json ) {
                    cacheLastJson = $.extend(true, {}, json);

                    if ( cacheLower != requestStart ) {
                        json.data.splice( 0, requestStart-cacheLower );
                    }
                    json.data.splice( requestLength, json.data.length );

                    drawCallback( json );
                }
            } );
        }
        else {
            json = $.extend( true, {}, cacheLastJson );
            json.draw = request.draw; // Update the echo for each response
            json.data.splice( 0, requestStart-cacheLower );
            json.data.splice( requestLength, json.data.length );

            drawCallback(json);
        }
    }
};


$.fn.dataTable.Api.register( 'clearPipeline()', function () {
    return this.iterator( 'table', function ( settings ) {
        settings.clearCache = true;
    } );
} );

        $(document).ready(function() {

                var tabelle = $('#mytable').DataTable( 
                {
                "processing": true,
                "serverSide": true, 
                "ajax": $.fn.dataTable.pipeline( 
                            {
                            url: 'source.htm',
                            pages: 1
                            } 
                        ),              
                .....
                } 
            );              

        } );
    </script>

最佳答案

我遇到了同样的问题,下面的代码解决了这个问题

jQuery(文档).ready(函数($){

关于javascript - "DataTable is not a function"$-issue/-conflict(jQuery 和新主题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27545812/

相关文章:

javascript - 我如何拥有两个 Express session ?

javascript - 无法在数组中循环数组

c - 将 char 数组的指针传递给函数

javascript - 如何将初始参数传递给 javascript 函数

javascript - Django JavaScript 翻译空目录(i18n/jsi18n)

javascript - 底部带箭头的垂直滚动页面

javascript - 网站加载前的欢迎屏幕(点击进入)[Splash Screen]

javascript - 打开时模态内的模态,仅先关闭 - Bootstrap

javascript - 如何在没有 window.onload 包装器的情况下运行函数

c# - 是否可以只从另一个函数中调用一个函数?