TypeError: $(...).DataTable 不是函数

IT技术 javascript jquery css asp.net datatables
2021-01-17 14:50:06

我正在尝试通过链接为我的项目使用 jQuery 的 Datatable JS

我从同一来源下载了完整的库。包中给出的所有示例似乎都可以正常工作,但是当我尝试将它们合并到我WebForms的 css 中时,js 根本不起作用。

这是我所做的:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link href="css/jquery.dataTables.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table id="myTable" class="display" cellspacing="0" width="100%">
            <thead>
                <tr>
                    <th>Name</th>
                    <th>Position</th>
                    <th>Office</th>
                    <th>Age</th>
                    <th>Start date</th>
                    <th>Salary</th>
                </tr>
            </thead>
            <tfoot>
                <tr>
                    <th>Name</th>
                    <th>Position</th>
                    <th>Office</th>
                    <th>Age</th>
                    <th>Start date</th>
                    <th>Salary</th>
                </tr>
            </tfoot>
            <tbody>
               <!-- table body -->
            </tbody>
        </table>
    </div>
    <script src="js/jquery.dataTables.js" type="text/javascript"></script>
    <script src="js/jquery.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#myTable').DataTable();
        });
    </script>
    </form>
</body>
</html>

我的解决方案中 JS 和 CSS 的文件结构如下所示:

解决方案中JS和CSS的文件结构

我已经添加了所有必要的 JS 和 CSS 参考,如手册中所示。渲染仍然不符合预期。没有 CSS,甚至 JS 也不起作用。

同样在控制台中,我收到以下错误:

ReferenceError: jQuery is not defined
TypeError: $(...).DataTable is not a function

我仍然没有在此处绑定任何动态数据(例如在中继器内),但它仍然无法正常工作。

有人可以指导我朝着正确的方向解决这个问题吗?

6个回答

原因

此错误可能有多种原因。

  • 缺少 jQuery DataTables 库。
  • jQuery 库jQuery DataTables之后加载
  • 加载了多个版本的 jQuery 库。

解决方案

jQuery DataTables之前包含一个jQuery 库版本 1.7 或更高版本

例如:

<script src="js/jquery.min.js" type="text/javascript"></script>
<script src="js/jquery.dataTables.min.js" type="text/javascript"></script>

有关此错误和其他常见控制台错误的更多信息,请参阅jQuery 数据表:常见 JavaScript控制台错误。

为什么 DataTables 不在每个演示的顶部用大粗体字母显示......“你必须在 DATATABLES JS 之前加载 JQUERY JS”。一行文字可以为人类节省大量浪费的时间:)
2021-04-03 14:50:06
我的问题是第二个问题:“jQuery 库是在 jQuery DataTables 之后加载的。” 最后移动了加载脚本并且它起作用了。
2021-04-05 14:50:06

这对我有用。但请确保在首选 dataTable.js 文件之前加载 jquery.js。干杯!

<script type="text/javascript" src="~/Scripts/jquery.js"></script>
<script type="text/javascript" src="~/Scripts/data-table/jquery.dataTables.js"></script>

 <script>$(document).ready(function () {
    $.noConflict();
    var table = $('# your selector').DataTable();
});</script>
方法中的 $.noConflict() 调用对我来说是关键。谢谢。
2021-03-29 14:50:06

我收到此错误是因为我发现我两次引用了 jQuery。

第一次:_Layout.cshtml在 ASP.NET MVC的母版页 ( ) 上,然后再次在当前页面上,所以我注释掉了母版页上的那个。

如果您使用的是 ASP.NET MVC,此代码段可以帮助您

@*@Scripts.Render("~/bundles/jquery")*@//comment this line 
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)

在当前页面中我添加了这些行

<script src="~/scripts/jquery-1.10.2.js"></script>

<!-- #region datatables files -->
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css" />
<script src="//cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<!-- #endregion -->

即使不使用 ASP.NET MVC,也希望这对您有所帮助

非常感谢,您的回答结束了 4 个小时的安装和重新安装 jquery 数据表!不过我有一个问题:如果我在 _Layout.cshtml 中需要 jQuery 并且在 myView.cshtml 中需要数据表,我该怎么办,因为在 myView.cshtml 中没有提到 jQuery 会导致“jQuery 未定义”?
2021-03-17 14:50:06
实际上,我在 _Layout.cshtml 中评论了 jquery.min.js。但是,真正对我有用的是将 @RenderSection("scripts", required: false) 放在所有 <scripts></scripts> 元素之后的最底部。
2021-04-13 14:50:06

如果由于某种原因加载了两个版本的 jQuery(不推荐),$.noConflict(true)从第二个版本调用会将全局范围的 jQuery 变量返回到第一个版本的变量。

有时它可能是旧版本(或不稳定)的 JQuery 文件的问题

溶液使用 $.noConflict();

<script src="js/jquery.js" type="text/javascript"></script>
<script src="js/jquery.dataTables.js" type="text/javascript"></script>
<script>
$.noConflict();
jQuery( document ).ready(function( $ ) {
    $('#myTable').DataTable();
});
// Code that uses other library's $ can follow here.
</script>

这是导出表插件完美运行所需的完整 JS 和 CSS 集。

希望它能节省您的时间

   <!--Import jQuery before export.js-->
    <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>


    <!--Data Table-->
    <script type="text/javascript"  src=" https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script>
    <script type="text/javascript"  src=" https://cdn.datatables.net/buttons/1.2.4/js/dataTables.buttons.min.js"></script>

    <!--Export table buttons-->
    <script type="text/javascript"  src="https://cdnjs.cloudflare.com/ajax/libs/jszip/2.5.0/jszip.min.js"></script>
    <script type="text/javascript" src="https://cdn.rawgit.com/bpampuch/pdfmake/0.1.24/build/pdfmake.min.js" ></script>
    <script type="text/javascript"  src="https://cdn.rawgit.com/bpampuch/pdfmake/0.1.24/build/vfs_fonts.js"></script>
    <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.2.4/js/buttons.html5.min.js"></script>
    <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.2.1/js/buttons.print.min.js"></script>

<!--Export table button CSS-->

<link rel="stylesheet" href="https://cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css">
<link rel="stylesheet" href="https://cdn.datatables.net/buttons/1.2.4/css/buttons.dataTables.min.css">

使用 id = 在表上添加导出按钮的 javascript tbl

  $('#tbl').DataTable({
                        dom: 'Bfrtip',
                        buttons: [
                            'copy', 'csv', 'excel', 'pdf', 'print'
                        ]
                    });

结果 :-

在此处输入图片说明

我能够在没有“导出表按钮”脚本调用的情况下做到这一点。好东西。
2021-04-08 14:50:06