自定义长度选择菜单在 DataTable 中不起作用

Custom length selection menu doesn't work in DataTable

我有一个运行以下内容的网页:

<script type="text/javascript">
    $(document).ready(function () {
        $('#example').DataTable({
            "oLanguage": {
                "sLengthMenu": '<select class="form-control input-sm m-b-10" style="width:80%">' +
                  '<option value="10">10 Records</option>' +
                  '<option value="20">20 Records</option>' +
                  '<option value="50">50 Records</option>' +
                  '<option value="100">100 Records</option>' +
                  '<option value="-1">All</option>' +
                  '</select>'
            }
        });
    });
</script>

在我输入以下内容之前,它一直运行良好;

<div class="block-area" id="custom-select">
    <div class="row">
        <div class="col-md-2 m-b-15">
            <select class="select">
                <optgroup label="Group 1">
                    <option>Option 1</option>
                    <option>Option 2</option>
                    <option>Option 3</option>
                </optgroup>
                <optgroup label="Group 2">
                    <option>Option 4</option>
                    <option>Option 5</option>
                    <option>Option 6</option>
                </optgroup>
            </select>
        </div>
    </div>
</div>

经过测试,似乎是 <select> 标签引起了问题并阻止了 JS 从 运行。

虽然我不明白为什么。有人可以解释一下问题出在哪里吗?

您忘记为 option 标签添加 value 属性。如果没有该属性,插件将无法知道您要显示多少行。

所以请更新您的代码:

var menu = '<div class="block-area" id="custom-select">'
+'<div class="row">'
+'<div class="col-md-2 m-b-15">'
+'<select class="select">'
+'<optgroup label="Per 10">'
+'<option value="10">10</option>'
+'<option value="20">20</option>'
+'<option value="30">30</option>'
+'</optgroup>'
+'<optgroup label="Per 50">'
+'<option value="50">50</option>'
+'<option value="100">100</option>'
+'</optgroup>'
+'</select>'
+'</div>'
+'</div>'
+'</div>'

$(document).ready(function(){    
    $('#example').DataTable({
        "oLanguage": {
            "sLengthMenu": menu
        }
    });
});

jsFiddle