如何使用JQuery获取包含指定文本的元素?

时间:2011-08-16 09:32:28

标签: 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的div。如何解决这个问题,以便我得到一个与'i'具有完全相同文本值的元素?

4 个答案:

答案 0 :(得分:5)

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

filter方法仅返回与条件匹配的元素。该条件仅匹配text为指定字符串的元素。

请注意,在您的示例中,这与任何内容都不匹配,因为您的选择器div > div将选择div元素作为另一个div的直接子元素,并且示例中的元素具有没有父div

这是运行代码的example。在示例中,我已将选择器更改为div

答案 1 :(得分:1)

使用休假代码 -

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

答案 2 :(得分:1)

这是一种方式:

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

答案 3 :(得分:1)

您可以扩展jQuery的选择器引擎以添加新的选择器:

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

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

Example