【问题标题】:Add a second function to this jquery?向这个 jquery 添加第二个函数?
【发布时间】:2011-12-24 11:31:45
【问题描述】:

以下 jQuery 函数按字母过滤我的表格列。每个字母都有一个<a>。我不确定如何添加另一个函数来过滤第 1 列,在 html 端使用不同的下拉列表。

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 脚本,它以漂亮的用户界面呈现表格,具有各种不同的功能,如搜索、每页过滤记录等. 我已经实现了有人在此处列出的这个 mod >> http://www.datatables.net/forums/discussion/6641/filtering-with-first-letter/p1

它工作正常,当我选择每个字母时,它会使用我单击的任何字母过滤第 0 列。我想要做的是有两个不同的过滤器,一个用于过滤第 0 列,即人名,还有另一个过滤器,它做同样的事情,但对于第 1 列,它是企业名称,我只是不知道如何将同一段代码添加两次?

【问题讨论】:

  • 您能否尝试改写您的问题,并显示其余部分的一些 HTML,尤其是下拉菜单。我把这篇文章读了三遍,但我不清楚。
  • +1 @saratis 这很不清楚。你想达到什么目的html在哪里?等
  • 并确保在链接的点击事件上返回false
  • 其实我想我理解你想要达到的目标 - 但你想引用同一个#tablestyle 表吗?

标签: javascript jquery html filter


【解决方案1】:

我不太了解您的上下文,但我建议您尝试使用 事件处理程序 而不是 JavaScript URL。

所以不要这样:

<a href="javascript:fil('');">ALL</a>

你可以这样做:

$('.sortalpha a').on('click', function() {
    fil('');
});

当然,这会使 所有 链接过滤 ''。为了解决这个问题,您可以从被点击的&lt;a&gt; 中获取文本并使用它来调用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/

编辑:我更新了答案以说明大写字母和正则表达式中的^

【讨论】:

  • 嗨,这如何与两个不同的过滤器一起工作?因为我需要在一个过滤器上过滤第 0 列,在另一个过滤器上过滤第 1 列。
  • 啊,这就是你想要做的......你看过这个吗? datatables.net/release-datatables/examples/api/regex.html fnFilter() 的第二个参数是列索引。
【解决方案2】:

如果插件写得好,它必须保持chainbilty,这样你就可以这样做:

function fil(rexp)
{
$('#tablestyle').dataTable().fnFilter(rexp, 0, true, false).fnFilter(rexp2, 0, true, false);
}

【讨论】:

  • 嗨,我需要在 html 中为两个不同的列表添加什么,因为链接当前在 url 中调用“fil”,所以我不能在第二个列表的 url 中添加“fil”也是。
猜你喜欢
  • 2021-12-28
  • 1970-01-01
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多