如何使用javascript检查页面上是否出现字符串

时间:2014-02-21 12:59:13

标签: javascript jquery visibility

有几个类似于这个的问题。但我没有在SO上找到这个确切的问题。 (其他地方也没有答案)。

我只需要知道字符串是否显示 AT LEAST ONCE 。字符串可能在HTML中出现不止一次,它被隐藏一次并显示另一次。

它与页面中的可见性有关,不一定在视口中。因此,如果你必须滚动查看它,那也没关系。

更新:我知道:containsis(":visible")这不是问题所在。当然,元素可以嵌套,并且它必须适用于所有情况。

2 个答案:

答案 0 :(得分:2)

以下内容应该有效,但它不是最有效的解决方案:

$("body, body *").contents().filter(function () {
    return this.nodeType === 3 && this.nodeValue.indexOf("Foo & Bar") >= 0;
}).parent(":visible");

此代码:

  • 找到文档中包含指定字符串 1
  • 的所有文本节点
  • 并检查他们的父母是否可见 2

1 这意味着包含字符串的最深节点。 :contains选择器没用,因为它可以返回一个可见元素(实际上是元素的一个分支),它包含一个包含指定字符串的不可见子元素。

2 如果元素的父元素也可见,则元素是可见的

答案 1 :(得分:0)

您可以将:containslength一起用于您的身体元素,它会计算匹配的数量。

if($('body:contains("demo")').length){
    alert("The world exists");
}else{
    alert("The world doesn't exist");   
};