我有一个包含文本值的列表。如何使列表对象具有完全给定的文本值?
<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'具有完全相同文本值的元素?
答案 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"));