jQuery检查div是否包含不起作用的文本

时间:2013-09-12 11:22:48

标签: javascript jquery

我有这样的代码:

$(document).ready(function () {
   var el = $('#solving'); 
   //var el = $('#solving:contains("Ожидайте появления новой капчи!...")');   
    setInterval(function(){
      console.log("Checking if el has text");
      if (el.text() == 'Wait! Ожидайте появления новой капчи!...'){
        console.log("Reloading");
      }
    },2000);
});

但在日志中我看到,它不起作用,即使页面包含,我也没有看到记录器的重新加载:

<div id="solving">
          Wait! Ожидайте появления новой капчи!...
        </div>

我也试试:

$('#solving:contains("Wait! Ожидайте появления новой капчи!...")')
什么错了?如何检查我的div在某些文本的存在?

6 个答案:

答案 0 :(得分:1)

您现有的代码间隔为2秒。我已更改为400毫秒。

$(document).ready(function () {
   var el = $('#solving'); 
   //var el = $('#solving:contains("Ожидайте появления новой капчи!...")');   
    setInterval(function(){
      console.log("Checking if el has text");
      if (el.text().indexOf("Wait!") != -1){
        console.log("Reloading");
      }
    }, 400);
});

答案 1 :(得分:1)

您可以执行以下操作:

if ($('#solving:contains("Wait! Ожидайте появления новой капчи!...")').length > 0) {
  // found
}

http://jsfiddle.net/8644K/1/。即使您的选择器包含:contains(...),它也只是一个选择器。这不会将$(<selector>)的返回值更改为布尔值,该布尔值仍然是可能匹配的对象列表。因此,您可以检查可以找到这些匹配对象的数量。

正如文档(http://api.jquery.com/contains-selector/)所说,选择包含指定文本的所有元素。

答案 2 :(得分:1)

使用

el.text().trim()== 'Wait! Ожидайте появления новой капчи!...'

当您使用下一行

启动文本时,您必须删除换行符

演示http://jsfiddle.net/f4PQM/

$(document).ready(function () {
   var el = $('#solving'); 
   //var el = $('#solving:contains("Ожидайте появления новой капчи!...")');   
    setInterval(function(){
      console.log("Checking if el has text" + el.text());
      if (el.text().trim() == 'Wait! Ожидайте появления новой капчи!...'){
        console.log("Reloading");
      }
    },2000);
});

答案 3 :(得分:1)

使用带有el.text()的trim(),因为div文本有空格。

  var el = $('#solving');
  //var el = $('#solving:contains("Ожидайте появления новой капчи!...")');   
    setInterval(function(){
      console.log("Checking if el has text");
      if (el.text().trim() == 'Wait! Ожидайте появления новой капчи!...'){
        console.log("Reloading");
      }
    },2000);

以下是working fiddlehttp://jsfiddle.net/J93mr/

答案 4 :(得分:1)

您的问题是您的div在其内容的开头包含空格,因此您应该使用$.trim()删除空格,如下所示: DEMO FIDDLE

  if ($.trim(el.text()) == 'Wait! Ожидайте появления новой капчи!...'){
    console.log("Reloading");
  }

但使用length()的解决方案更好,正如@Remo所建议的那样:

if ($('#solving:contains("Wait! Ожидайте появления новой капчи!...")').length > 0) {
          console.log("Reloading");

}

答案 5 :(得分:0)

http://jsfiddle.net/fPaxU/1/

el.text().trim()

你需要的只是一个简单的'修剪'