简体   繁体   English

如何使用自己的自定义下拉菜单控制由DataTables生成的选择菜单?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM