怎么样:contains()应该使用?

时间:2010-10-19 19:47:06

标签: jquery jquery-selectors

我是jQuery的新手,但只是尝试创建一个可以用来过滤表的函数。我已经设置了表,以便我可以按类选择所有行(工作正常)并在结果上调用each()。在每个()的回调中,我得到了这个if语句:

if ($(this).find("td[name=firstName]:contains('ke')").size() > 0)

然而,当我知道它在那里时,它找不到匹配。如果我取出contains()调用它确实找到了表格单元格,但是我真的不确定是什么问题。不幸的是(对我而言)这可能就像使用错误的语法一样简单...... :(

最终结果是选择器字符串有一个变量,但是因为即使直接使用字符串也不起作用......

3 个答案:

答案 0 :(得分:1)

.size()替换为.length

还检查它是否找到小写'ke'

答案 1 :(得分:1)

你可以用这个来扩展jQuery的选择器:

$.expr[':'].icontains = function(obj, index, meta, stack){
return (obj.textContent || obj.innerText || jQuery(obj).text() || '').toLowerCase().indexOf(meta[3].toLowerCase()) >= 0;
};

这会给你一个新的伪选择器:icontains(text),它的作用类似:contains(text),但不区分大小写。

请参阅:contains(text)

的jQuery文档页面上的Comment Section

答案 2 :(得分:0)

这对我有用(http://jsfiddle.net/dactivo/PHMkx/)。

它查找带有值为“FirstName”的属性“name”的td,并在td内部,也就是说,td中的html包含字符串“prueba”。 size()或length都在这里工作。

<table><tr><td name="FirstName"><a class="edit">prueba</a> </td></tr></table>

$(document).ready(function(){

    if ($("table:eq(0)").find("td[name=FirstName]:contains('prueba')").size() > 0)
  {
      alert("yes");
  }

});