[英]How do I control a DataTables-generated select menu with my own custom dropdown menu?
I've got an auto-generated select menu with four options, which looks like this: 我有一个带有四个选项的自动生成的选择菜单,如下所示:
<div class="dataTables_length" id="table_length">
<label>
Show
<select name="table_length" aria-controls="table">
<option value="10">10 results</option>
<option value="15">15 results</option>
<option value="25">25 results</option>
<option value="-1">All results</option>
</select>
entries
</label>
</div>
I also have a div element contained outside of the DataTables area, which has all of the styling that I cannot apply to the select element on account of it being a select element: 我还在DataTables区域之外包含一个div元素,该元素具有我无法应用于select元素的所有样式,因为它是select元素:
<div id="dropdown-container">
<div id="dropdown">
<button id="dropdown-button"></button>
<div id="10-results" class="dropdown-item">
<p>
10 results
</p>
</div>
<div id="15-results">
<p>15 results</p>
</div>
<div id="25-results" class="dropdown-item">
<p>25 results</p>
</div>
<div id="all-results" class="dropdown-item">
<p>All results</p>
</div>
</div>
</div>
From what I've researched, I should be able to cause the select value to change on a click using the following jQuery logic: 根据我的研究,我应该能够使用以下jQuery逻辑使select值在单击时发生变化:
$("#10-results").on("click", function(){
$('select').val( 10 );
});
but this doesn't seem to be working! 但这似乎不起作用!
This is the only select element on the page, and even after injecting a unique class into it the expected result - of each option being activated on clicking the other elements as if that option was itself clicked - is not being seen. 这是页面上唯一的选择元素,即使在向其注入唯一类之后,也无法看到预期结果-单击其他元素时激活每个选项,就像单击该选项本身一样。
Not sure if this is a DataTables-specific problem, but it doesn't make sense to me to include an un-stylable select element without alternative options being available. 不知道这是否是特定于DataTables的问题,但是对我来说,在没有其他选择可用的情况下包括一个无法样式化的select元素对我来说没有任何意义。
page.len() : This method is used quite simply to get and set the length of the paging used by DataTables for display.
page.len() :此方法非常简单地用于获取和设置DataTables用于显示的页面调度的长度。
Hence, change your click event handler with: 因此,请使用以下命令更改点击事件处理程序:
$("#10-results").on("click", function(){
$('#yourdatatableid').DataTable().page.len(10).draw();
});
$("#10-results").on("click", function(){ $('#yourdatatableid').DataTable().page.len(10).draw(); }); $('#yourdatatableid').DataTable({ "pageLength": 5, "lengthMenu": [ [5, 10, 25, 50, -1], [5, 10, 25, 50, "All"] ] });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <link rel="stylesheet" href="//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css"> <script src="//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script> <div id="dropdown-container"> <div id="dropdown"> <button id="dropdown-button"></button> <div id="10-results" class="dropdown-item"> <p> 10 results </p> </div> <div id="15-results"> <p>15 results</p> </div> <div id="25-results" class="dropdown-item"> <p>25 results</p> </div> <div id="all-results" class="dropdown-item"> <p>All results</p> </div> </div> </div> <table id="yourdatatableid" class="display" style="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> <tbody> <tr> <td>Tiger Nixon</td> <td>System Architect</td> <td>Edinburgh</td> <td>61</td> <td>2011/04/25</td> <td>$320,800</td> </tr> <tr> <td>Garrett Winters</td> <td>Accountant</td> <td>Tokyo</td> <td>63</td> <td>2011/07/25</td> <td>$170,750</td> </tr> <tr> <td>Ashton Cox</td> <td>Junior Technical Author</td> <td>San Francisco</td> <td>66</td> <td>2009/01/12</td> <td>$86,000</td> </tr> <tr> <td>Cedric Kelly</td> <td>Senior Javascript Developer</td> <td>Edinburgh</td> <td>22</td> <td>2012/03/29</td> <td>$433,060</td> </tr> <tr> <td>Airi Satou</td> <td>Accountant</td> <td>Tokyo</td> <td>33</td> <td>2008/11/28</td> <td>$162,700</td> </tr> <tr> <td>Brielle Williamson</td> <td>Integration Specialist</td> <td>New York</td> <td>61</td> <td>2012/12/02</td> <td>$372,000</td> </tr> <tr> <td>Herrod Chandler</td> <td>Sales Assistant</td> <td>San Francisco</td> <td>59</td> <td>2012/08/06</td> <td>$137,500</td> </tr> <tr> <td>Rhona Davidson</td> <td>Integration Specialist</td> <td>Tokyo</td> <td>55</td> <td>2010/10/14</td> <td>$327,900</td> </tr> <tr> <td>Colleen Hurst</td> <td>Javascript Developer</td> <td>San Francisco</td> <td>39</td> <td>2009/09/15</td> <td>$205,500</td> </tr> <tr> <td>Sonya Frost</td> <td>Software Engineer</td> <td>Edinburgh</td> <td>23</td> <td>2008/12/13</td> <td>$103,600</td> </tr> <tr> <td>Jena Gaines</td> <td>Office Manager</td> <td>London</td> <td>30</td> <td>2008/12/19</td> <td>$90,560</td> </tr> <tr> <td>Quinn Flynn</td> <td>Support Lead</td> <td>Edinburgh</td> <td>22</td> <td>2013/03/03</td> <td>$342,000</td> </tr> <tr> <td>Charde Marshall</td> <td>Regional Director</td> <td>San Francisco</td> <td>36</td> <td>2008/10/16</td> <td>$470,600</td> </tr> </tbody> <tfoot> <tr> <th>Name</th> <th>Position</th> <th>Office</th> <th>Age</th> <th>Start date</th> <th>Salary</th> </tr> </tfoot> </table>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.