Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查是否有任何标记具有特定的内部HTML_Javascript_Jquery_Html_Iterator - Fatal编程技术网

Javascript 检查是否有任何标记具有特定的内部HTML

Javascript 检查是否有任何标记具有特定的内部HTML,javascript,jquery,html,iterator,Javascript,Jquery,Html,Iterator,如果id为“word”的div中的任何跨度的内部HTML值为v,我将如何编写返回true的jquery函数?对于选择器,我有: $('#word span').html() 我不知道迭代它们并返回布尔值的正确方法,因为当前我在该分区中有5个span标记。包含选择器 由于您是使用jQuery读取的,因此可以利用其.contains方法或“:contains”伪选择器: $("#word span").contains("word") 或 对于包含单词的每个span,这不会返回true,而是返回

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

$('#word span').html()
我不知道迭代它们并返回布尔值的正确方法,因为当前我在该分区中有5个span标记。

包含
选择器 由于您是使用jQuery读取的,因此可以利用其
.contains
方法或“:contains”伪选择器:

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

对于包含单词的每个span,这不会返回true,而是返回包含该单词的元素。您将得到一个匹配元素的列表,可以这样操作:

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

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

您可以使用
:contains
作为
$(“#单词span:contains(v)”)
,但它会选择包含“v”的跨距,而不是将其作为精确值
.html
仅返回所选第一个元素的html字符串,因此您可能希望使用
进行迭代。每个
都要进行精确比较:

var count = 0;
$("#word span").each(function () {
   if ($.trim($(this).text()) === 'v') {
      count++;
   }
});

您可以使用
filter
方法:

$("#word span").filter(function () {
      return this.innerHTML === v; // in case that v is a variable
      // return $(this).text() === 'v';  
}).length;

在选择器中添加一个
':contains(“+v+”)
并用空格或换行符过滤掉所有愚蠢的节点是否更好?然后,
filter()
只应用于可能完全等于文本的文本节点。我从来没有实际比较过它们的速度。@leemedor Well
包含
选择器选择包含特定值的元素,而不必选择其内容等于该值的元素(+隐藏字符),它选择
v某物
v
,它与精确匹配不同,因此,删除空白和其他隐藏字符在这里不是一个选项,在这些情况下,使用
filter
$。trim
是最佳选项。可能首先使用
包含
的组合?这样,您只缓存潜在的匹配项,然后仅通过一组集中的范围进行迭代,而不是一直缓存和迭代所有范围。我一点也不担心性能,我只是在阅读代码时从逻辑的角度来看它。这是contains的一个很好的替代方案,让我想知道contains的效率有多高,因为它必须在内部执行非常类似的操作。我将研究源代码。
$("#word span").filter(function () {
      return this.innerHTML === v; // in case that v is a variable
      // return $(this).text() === 'v';  
}).length;