0

我有这样的代码:

$(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 是否存在一些文本?

4

6 回答 6

1

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

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

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

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

}
于 2013-09-12T11:35:11.283 回答
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);
});
于 2013-09-12T11:26:36.300 回答
1

您可以执行以下操作:

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

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

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

于 2013-09-12T11:27:12.430 回答
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);
});
于 2013-09-12T11:31:52.260 回答
1

将 trim() 与 el.text() 一起使用,因为 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);

这是工作小提琴:http: //jsfiddle.net/J93mr/

于 2013-09-12T11:32:31.587 回答
0

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

el.text().trim()

您所需要的只是一个简单的“修剪”

于 2013-09-12T11:40:11.730 回答