jQuery过滤结果 - stange匹配

时间:2016-06-10 13:50:06

标签: jquery filter contains

我使用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

由于

1 个答案:

答案 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;
};
});