以下jQuery函数逐字过滤我的表。每封信都有一个<a>
。我不知道如何使用html端的不同下拉列表来添加另一个函数来过滤列1。
JavaScript的:
function fil(rexp)
{
$('#tablestyle').dataTable().fnFilter(rexp, 0, true, false);
}
HTML:
<div style="float:left;" class="sortalpha">
<a href="javascript:fil('');">ALL</a>
| <a href="javascript:fil2('^a');">A</a>
| <a href="javascript:fil('^b');">B</a>
<!-- [...] -->
| <a href="javascript:fil('^z');">Z</a>
</div>
我尝试做的是复制顶部并将fil
更改为fil2
,然后复制HTML部分并将其更改为fil2
。这是正确的方法吗?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
为了给每个人更多信息,我正在使用datatables {www.datatables.net}这是一个jquery脚本,它在一个漂亮的ui中呈现表格,具有各种不同的功能,如搜索,每页过滤记录等。 我已经实现了此人在此处列出的mod&gt;&gt; http://www.datatables.net/forums/discussion/6641/filtering-with-first-letter/p1
它工作正常,当我选择每个字母时,它使用我点击的任何字母过滤第0列。我想要做的是有两个不同的过滤器,一个过滤第0列,这是人的名字,另一个过滤器做同样的事情,但对于第1列是商业名称,我只是不确定如何两次添加相同的代码?。
答案 0 :(得分:1)
如果插件编写得很好,它必须保持连字符,所以你可以这样做:
function fil(rexp)
{
$('#tablestyle').dataTable().fnFilter(rexp, 0, true, false).fnFilter(rexp2, 0, true, false);
}
答案 1 :(得分:1)
我真的不知道您的上下文,但我建议您尝试使用事件处理程序而不是JavaScript网址。
所以不要这样:
<a href="javascript:fil('');">ALL</a>
你可以这样做:
$('.sortalpha a').on('click', function() {
fil('');
});
当然,这会使{em>所有链接过滤到''
。要解决此问题,您可以从点击的<a>
获取文字并使用该文字来调用fil()
,如下所示:
function fil(rexp) {
if (rexp.length > 0) {
rexp = '^' + rexp;
}
//$('#tablestyle').dataTable().fnFilter(rexp, 0, true, false);
alert('Filter on: "' + rexp + '"');
}
$('.sortalpha a').on('click', function(event) {
var letter = $(this).text().toLowerCase();
if (letter === 'all') {
fil('');
} else {
fil(letter);
}
});
以下是工作示例:http://jsfiddle.net/uzGat/2/
修改:我更新了大写字母和正则表达式^
的帐户答案。