我正在使用以下JQuery来过滤数据表上的行,这样可以正常工作......
yuiDtFilter = function(tableDivId, filter) {
//custom jQuery function defines case-insensitive fn:Contains, use default fn:contains for case-sensitive search
jQuery.expr[':'].Contains = function(a,i,m){
return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0;
};
$("#" + tableDivId + " .yui-dt-data").find('tr').hide();
$("#" + tableDivId + " .yui-dt-data").find('td:Contains("' + filter + '")').parents('tr').show();
}
但是我需要以相反的方式进行过滤器工作。我需要它来删除不匹配搜索词的行。
我发现我需要使用'not()',但我花了大部分时间徒劳地试图让它工作(使用我能找到的每个例子)。
我尝试过多种变体 -
$("#" + tableDivId + " .yui-dt-data")
.find(:not(('td:Contains("' + filter + '")'))
.parents('tr').remove();
任何人都可以用我的代码作为起点来帮助我吗?
答案 0 :(得分:2)
尝试
$("#" + tableDivId + " .yui-dt-data").find('td').not(':contains("' + filter + '")').parents('tr').remove();
或
$("#" + tableDivId + " .yui-dt-data").find( 'td:not(:contains("' + filter + '"))' ).parents('tr').remove()
答案 1 :(得分:1)
使用jquery从HTML表中删除不包含特定文本或字符串的行。
注意:如果HTML表中只有两列,我们可以使用“ last-child”属性来查找。
*$(document).ready(function(){
$("#tabledata tbody .mainTR").each(function(){
var lastTD = $(this).find("td:last-child");
var lastTdText = lastTD.text().trim();
if(!lastTdText.includes("DrivePilot")){
$(this).remove();
}
});
});
注意:如果HTML表中有两列以上,则可以使用“ nth-child(2)”属性来查找。
传递带有“ nth-child(列索引)”的列索引
$(document).ready(function(){
$("#tabledata tbody .mainTR").each(function(){
var lastTD = $(this).find("td:nth-child(2)");
var lastTdText = lastTD.text().trim();
if(!lastTdText.includes("DrivePilot")){
$(this).remove();
}
});
});
注意:“ DrivePilot”只不过是文本或字符串