Pagination 如何使select2元素与数据表和分页一起工作?

Pagination 如何使select2元素与数据表和分页一起工作?,pagination,datatables,jquery-select2,Pagination,Datatables,Jquery Select2,我的select2元素与jquery数据表配合良好: var table = $('#table').DataTable({ "ajax": { "url": "data/table.json", "dataSrc": "", }, "columnDefs": [ { "render": function (data, type, row) {

我的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();
     },
 });
但它只在我分页的第一页起作用。当我转到第二页或只是显示更多结果时,它不再工作。

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

 initComplete: function () {
       $('#table').on('draw.dt', function() {
            $('select').select2();
        });
   },
draw.dt函数在每次分页页面更改时初始化select2元素:

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

使用数据宽度属性:

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");
            });
        }
    });
}

使用数据宽度属性:

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");
            });
        }
    });
}

虽然只回答代码可能会有所帮助,但添加一些解释总是更好的。感谢您提供的这个代码片段,它可能会提供一些有限的、即时的帮助。A通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有其他类似问题的读者更有用。请在你的回答中添加一些解释,包括你所做的假设。@peace\u love,你能解释draw.dt的来源吗?我也面临同样的问题,除了本地数据之外,我发布了它,但无法让它正常工作。虽然只有代码的答案可能会有帮助,但添加一些解释总是更好。感谢您提供此代码片段,它可能会提供一些有限的、即时的帮助。A通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有其他类似问题的读者更有用。请在你的回答中添加一些解释,包括你所做的假设。@peace\u love,你能解释draw.dt的来源吗?我也面临同样的问题,只是发布了本地数据,无法使其正常工作。这只会修改字段的实际宽度,与分页无关。您需要自己解决此代码,但通过添加一个类,您可以将其添加到datatable的pagination on.init事件中,您可以解决此问题。您没有正确地给出任何Html+javascript示例来进行示例响应…这只修改字段的实际宽度,与分页无关您需要自己解决此代码,但通过添加一个类,您可以将该类添加到datatable的pagination on.init事件中,您可以解决此问题。您没有正确给出任何Html+javascript示例来进行示例响应。。。