我使用jQuery过滤表行并且它可以正常工作。
但是我已经以一种非常具体的方式注意到了它不应该找到的匹配。
这是我的jQuery:
John Smith 4500
Mike Green 1234
David Brown 8542
ID5004 5004
Mal Smith 6532
这是我的数据:
{{1}}
如果我搜索1234,我只得到1234 ..如果我搜索4500,我得到4500& 5004。
我认为这个问题是由于内部文本正在被阅读并且匹配于:
John Smith 4500
ID500 4 500 4
我仍然希望能够搜索所有字段,但是是否可以限制匹配,以便它找不到这样的条目?
我已经创建了一个显示问题的 fiddle 。
由于
答案 0 :(得分:2)
问题在于jQuery(elem).text()
它将两个文本的文本连接起来而没有空格。
您可以检查tr的每个td。
https://jsfiddle.net/ktriek/bsef5bLj/6/
jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
return function( elem ) {
var tds = jQuery(elem).find('td');
return tds.eq(0).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0 ||
tds.eq(1).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});