在这个jquery中添加第二个函数?

时间:2011-12-24 11:31:46

标签: javascript jquery html filter

以下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列是商业名称,我只是不确定如何两次添加相同的代码?。

2 个答案:

答案 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/

修改:我更新了大写字母和正则表达式^的帐户答案。