【问题标题】:JQuery Tablesorter - Filter by clicking linkJQuery Tablesorter - 通过单击链接进行过滤
【发布时间】:2013-12-25 04:32:00
【问题描述】:

我正在使用@Mottie 出色的 Tablesorter 分支,并希望能够过滤带有外部链接的表列。

  • 这不是绝对必要的,但我想通过多次单击来打开和关闭过滤器。或者,我总是可以添加一个 All Records 链接来重置列。
  • 我不需要在单个列中组合过滤器。换句话说,数据不会同时是 1 月和 10 月。

我找到了一个带有external link demo 的表sort,但是那个表是排序的,而不是过滤器,而且它不会切换。

我还找到了一个非常接近的table filter with buttons demo。但是,正如我所提到的,我真的很喜欢链接,如果可能的话,我希望链接切换,并且不需要组合过滤器。

提前致谢。

【问题讨论】:

    标签: javascript jquery tablesorter


    【解决方案1】:

    这实际上比我想象的要容易得多。这是一个有效的demo,它直接来自上面 Mottie 的演示代码。我用链接替换了按钮,重命名了关联的类以使其更有意义,并替换了 JavaScript 函数上的类以匹配链接上的类。

    公平警告:我并没有声称自己什么都知道,所以我的修改可能会出现非常愚蠢的错误。

     $('.link-filter').click(function() {
            var filters = $('table').find('input.tablesorter-filter'),
            col = $(this).data('filter-column'),
            txt = $(this).data('filter-text');
        // filters.val('');
        filters.eq(col).val(txt).trigger('search', false);
    });
    

    各个列中的过滤器组合在一起,但我现在只需要一个列过滤器,所以这对我来说不是问题。

    Country:<br>
    <a href="#" class="link-filter" data-filter-column="4" data-filter-text="">All Countries</a> | 
    <a href="#" class="link-filter" data-filter-column="4" data-filter-text="Netherlands">Netherlands</a> | 
    <a href="#" class="link-filter" data-filter-column="4" data-filter-text="Belgium">Belgium</a> | 
    <a href="#" class="link-filter" data-filter-column="4" data-filter-text="Germany">Germany</a>
    <br /><br />
    
    <table id="festivaloverzichttable" class="tablesorter">
    <thead>
    <tr>
      <th width="17%" data-placeholder="Search...">Event</th>
      <th width="18%" data-placeholder="Search...">Date</th>
      <th width="9%" data-placeholder="Search...">Duration</th>
      <th width="12%" data-placeholder="Search...">Place</th>
      <th width="10%" data-placeholder="Search...">Country</th>
      <th data-placeholder="Zoek...">Genre(s)</th>
    </tr>
    </thead>
    <tbody>
    <tr>
      <td>Event 1</td>
      <td data-date="06-02">TBA</td>
      <td>2</td>
      <td>Oisterwijk</td>
      <td>Netherlands</td>
      <td>Hardstyle</td>
    </tr>
    <tr>
      <td>Event 2</td>
      <td data-date="10-11">11 October t/m 13 October</td>
      <td>3</td>
      <td>Volkel</td>
      <td>Netherlands</td>
      <td>Pop, Rock, Urban, Electronic</td>
    </tr>
    <tr>
      <td>Event 3</td>
      <td data-date="06-02">TBA</td>
      <td>1</td>
      <td>Amsterdam</td>
      <td>Netherlands</td>
      <td>Electronic</td>
    </tr>
    <tr>
      <td>Event 4</td>
      <td data-date="09-01">TBA</td>
      <td>1</td>
      <td>Utrecht</td>
      <td>Netherlands</td>
      <td>Electronic, Urban</td>
    </tr>
    <tr>
      <td>Event 5</td>
      <td data-date="07-06">6 July - 7 July</td>
      <td>2</td>
      <td>Beek en Donk</td>
      <td>Netherlands</td>
      <td>Electronic, Hardstyle</td>
    </tr>
    
    ...
    
    </tbody>
    </table>​
    

    Javascript

    $("#festivaloverzichttable").tablesorter({
        sortList: [[0, 0]],
        widgets: ['zebra', 'filter', 'saveSort'],
        widgetOptions: {
          filter_reset: 'button.reset'
        }
    });
    
     $('.link-filter').click(function() {
          var filters = $('table').find('input.tablesorter-filter'),
          col = $(this).data('filter-column'),
          txt = $(this).data('filter-text');
          // filters.val('');
         filters.eq(col).val(txt).trigger('search', false);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-29
      • 1970-01-01
      • 2015-03-31
      • 2013-09-07
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 1970-01-01
      相关资源
      最近更新 更多