.conquins of jquery ..它没有按照我想要的方式工作。还有其他方法吗?

时间:2015-04-15 02:42:07

标签: jquery

我应该使用jquery在表中找到一个值。我使用“.contains”,但它不能按我想要的方式工作。

我的代码:

var td=$('#table tr > td:first:contains(\"'+search+'\")').length;          
          if(td>0){
              $("#message").html('Already added in the list.');
          }

我认为“。contains()”在表格的td中搜索一个值,但不是确切的值。举个例子,我试图在表格中搜索“ample”。现有表中td的一个值是 “示例”,它将返回TRUE,因为“示例”一词中确实存在“ample”...它的工作方式类似于sql中的“LIKE”查询。我想要的是如果值完全正确则返回TRUE ...

除了使用.contains之外,谁曾经想过我想说的任何建议或替代方法?非常感谢那些能给予的人。

3 个答案:

答案 0 :(得分:0)

如何使用filterfilter将帮助您对一组项目应用过滤条件,并返回与条件匹配的项目子集。

var td = $('#table tr > td:first').filter(function() { return $(this).html() == search;});
if(td.length)
   alert ('Already added in the list.'});

以下是演示:https://jsfiddle.net/qp51sgL6/1/

答案 1 :(得分:0)

您可以使用此过滤器功能,而不是使用包含。

var td=$('#table tr > td:first').filter(function() {return $(this).text() == search;}).length;

过滤功能更强大,你可以有更多的控制权。

希望这有帮助。

答案 2 :(得分:0)

您可以使用的一种方法是使用正则表达式将文本与文本边界完全匹配。使用以下正则表达式扩展选择器和编写自己的选择器是很容易的,使用以下示例:

$.expr[":"].matches = function(obj, index, meta, stack){
    var regX = new RegExp('\\b'+meta[3]+'\\b');
    return regX.test(obj.textContent || obj.innerText || $(obj).text() || "");
}

叫做:

$('td:first:matches(\"'+search+'\")');

或者你可以在过滤器中使用相同的正则表达式来测试元素的.text()。

这适用于单个和多个单词部分。如果你有三个单元格带有“sample”,“ample”和“solid example”并使用

$('td:matches("ample")');

它只会返回“充足”的那个。同样,使用“example”进行搜索仍然会匹配“solid example”,因为那里存在确切的单词。

如果您只想匹配整个文本,则匹配.html()或.text()的其他解决方案将与传递的术语匹配。