【问题标题】:How can I make my select2 element work with datatables and pagination?如何使我的 select2 元素与数据表和分页一起使用?
【发布时间】:2018-01-23 14:33:43
【问题描述】:

我的 select2 元素与我的 jquery 数据表配合得很好:

  var table = $('#table').DataTable({
        "ajax": {
            "url": "data/table.json",
            "dataSrc": "",
        },


        "columnDefs": [
             {
            "render": function (data, type, row) {
                return '<select class="form-control select2" ><option selected value="one">one</option><option value="two">two</option></select>';
            },
            "targets": 0
            },
        ],

       "columns": [
            {
                "data": "content"
            },
        ],
       "dom": "<row></row>",

     initComplete: function () {
       $('select').select2();
     },
 });

但它只在我的分页的第一页上有效。当我转到第二页或只是显示更多结果时,它不再工作了。

【问题讨论】:

    标签: pagination datatables jquery-select2


    【解决方案1】:

    draw.dt函数在每次分页页面变化时初始化 select2 元素:

     initComplete: function () {
           $('#table').on('draw.dt', function() {
                $('select').select2();
            });
       },
    

    【讨论】:

    • 虽然纯代码的答案可能会更好地添加一些解释
    • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation would greatly improve its long-term value 通过展示为什么这是一个很好的解决问题的方法,并将使其对未来有其他类似问题的读者更有用。请edit您的回答添加一些解释,包括您所做的假设。
    • @peace_love,你能解释一下 draw.dt 的来源吗?我遇到了同样的问题并发布了它,除了本地数据并且无法让它工作。
    【解决方案2】:

    带数据宽度属性:

    function Select2() {
        $('select').each(function() {
            $(this).off('change');
            var width = $(this).attr("data-width") || '100px';
            var x = this.required;
            $(this).select2({
                theme: 'bootstrap4',
                width: width,
                dropdownAutoWidth: true
            });
            if (x) {
                $(this).next().children().children().each(function() {
                    $(this).css("border-color", "#f8ac59");
                });
            }
        });
    }
    

    【讨论】:

    • 这只是修改字段的实际宽度,与分页无关
    • 您需要自己解决此代码,但是通过添加一个可以添加到数据表的分页“on.init”事件的类,您可以解决此问题。您没有正确给出任何 Html+javascript 示例来做出示例响应...
    猜你喜欢
    • 2010-12-02
    • 2019-07-06
    • 2016-01-30
    • 2015-12-13
    • 2018-04-22
    • 2016-11-23
    • 2017-08-25
    • 2014-07-12
    • 2013-02-15
    相关资源
    最近更新 更多