2011-08-16 87 views
0

我有一个列表,每个列表包含一个文本值。如何获得具有给定文本值的列表对象?如何使用JQuery获取包含指定文本的元素?

<div id="child4"></div> 

<div id="child5">ib</div> 

<div id="child6"></div> 

<div id="child7">ii</div> 

<div id="child8">iii</div> 
<div id="child1" width="200px"></div><div id="child2">i</div> 

<script type="text/javascript"> 
    alert($("div>div:contains('i')").attr("id")); 
</script> 

上述脚本给了我所有包含文本值i..How我可以解决此问题的股利,使我得到具有完全相同的文本值“我”的元素?

回答

5
$("div > div").filter(function() { 
    return $(this).text() === "i"; 
}); 

filter方法只返回符合条件的元素。该条件将只匹配text是指定字符串的元素。

注意,在你的榜样,这将不匹配任何东西,因为你的选择div > div将选择div元素是另一个div直接孩子,在你的例子中的元素没有父div

下面是运行代码的example。在这个例子中,我将选择器更改为div

+0

什么= == stahd的? –

+0

这是严格的平等运算符。它可以防止类型之间的JavaScript转换。在这种情况下,它没有区别,您可以轻松使用'==',但是当您不希望发生类型强制时使用它是个好习惯。欲了解更多信息,请参阅此问题:http://stackoverflow.com/questions/523643/difference-between-and-in-javascript –

1

利用休耕代码 -

<script type="text/javascript"> 
    alert($("div>div:contains('\\s*i\\s*$')").attr("id")); 
</script> 
+0

它说我没有定义.. \ \ * *代表的方式是什么? –

1

这是一种方式:

<script type="text/javascript"> 
    $("div").each(function() { 
     if ($(this).text() == 'i') 
      alert($(this).attr('id')); 
     }) 
</script> 
1

可以扩展jQuery的选择引擎增加一个新的选择:

$.expr[':'].texteq = function(elem, i, match, array) { 
    return $(elem).text() === match[3]; 
}; 

alert($("div:texteq('i')").attr("id")); 

Example

相关问题