我有一个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();
}
实现这一目标的最佳方法是什么?
答案 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()
,它已被删除。