jQuery TableSorter - 基于外部变量的textExtraction

时间:2014-02-26 00:50:45

标签: javascript jquery tablesorter

我有一个TableSorted表,每个TD元素中有五个SPAN元素。四个总是被隐藏,但是在单击表格外的div时,某些跨度将被隐藏,具体取决于单击哪个div。

我的表排序很好,但我需要的是textExtraction获取不同的SPAN,具体取决于已选择的div的值。

我尝试过以下无效:

textExtraction:function(node){
        var filter=$("div.career a.sel").text();
        if(filter=="a"){var theindex=0;}
        if(filter=="b"){var theindex=1;}
        if(filter=="c"){var theindex=2;}
        if(filter=="d"){var theindex=3;}
        if(filter=="e"){var theindex=4;}
        return $(node).find("span").eq(theindex).text();
    }

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

仅在初始化或更新tablesorter时调用textExtraction函数。选择更改后尝试触发更新。

var indexes = 'abcde'.split(''),
    // Is this a select box?
    $sel = $("div.career a.sel").on('change', function(){
        $('table').trigger('update');
    });

$('table').tablesorter({
    textExtraction: function(node){
        // if this is a select, get val(), not text()
        var filter = $sel.val(),
            theindex = $.inArray( filter, indexes );
        return $(node).find("span").eq(theindex).text();
    }
});

更新:有关链接,请尝试以下操作:

var indexes = 'abcde'.split(''),
    $careers = $("div.career a").on('click',function(){
        var searcher = $(this).attr("rel");
        $("div.career a").removeClass("sel");
        $(this).addClass("sel");
        $("td.stat span").hide();
        $("td.stat span.career_" + searcher).show();
    });

$('table').tablesorter({
    textExtraction: function(node){
        // find selected
        var filter = $careers.filter('.sel').text(),
        theindex = $.inArray( filter, indexes );
        return $(node).find("span").eq(theindex).text();
    }
});

注意:不要在jQuery版本1.9+中使用live(),它已被删除。