4

如果 id 为“word”的 div 中的任何跨度具有值为 v 的内部 HTML,我将如何编写一个返回 true 的 jquery 函数?对于选择器,我有:

$('#word span').html()

我对遍历它们并返回布尔值的正确方法感到困惑,因为目前我在该 div 中有 5 个 span 标签。

4

3 回答 3

4

您可以使用:containsas in $("#word span:contains(v)"),但这会选择包含“v”的跨度,而不是将其作为精确值。 仅返回所选第一个.html元素的 html 字符串,因此您可能想要迭代并进行精确比较:.each

var count = 0;
$("#word span").each(function () {
   if ($.trim($(this).text()) === 'v') {
      count++;
   }
});
于 2012-12-27T20:27:55.427 回答
2

选择contains

由于您已经在使用 jQuery,您可以利用它的.contains方法或 ':contains' 伪选择器:

$("#word span").contains("word")

或者

$("#word span:contains(word)")

对于包含该单词的每个跨度,这不会返回 true,而是包含该单词的元素。你会留下一个匹配元素的列表,可以像这样操作:

var $matched = $("word span").contains("word");

$matched.each(function (i, el) {
    // do something with the el
});

参考

http://api.jquery.com/jQuery.contains/

于 2012-12-27T20:27:33.450 回答
2

您可以使用filter方法:

$("#word span").filter(function () {
      return this.innerHTML === v; // in case that v is a variable
      // return $(this).text() === 'v';  
}).length;
于 2012-12-27T20:29:49.583 回答