2013-12-24 121 views
0

我正在使用@Mottie的Tablesorter优秀叉,并希望能够过滤带有外部链接的表列。JQuery Tablesorter - 通过点击链接筛选

  • 这不是严格必要的,但我想多次点击切换过滤器的开关。或者,我总是可以添加一个重置列的链接。
  • 我不需要将过滤器合并到一个列中。换句话说,数据不会是一月和十月。

我找到一张桌子排序external link demo,但一个排,而不是过滤器,它不切换。

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

在此先感谢。

回答

2

这实际上比我想象的要容易得多。这是一个直接来自Mottie的演示代码的demo。我用链接替换了按钮,重命名相关的类,以便更有意义,并替换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); 
});