4

我有这个文档结构

<div id="log">
<div>ABC</div>
<br/>
<div>DEF</div>
<br/>
...
</div>

其中...表示任意数量的 div、br 对。

现在我需要编写一个名为 exists 的 JQuery 函数,它接受一个 id(在本例中为“log”)和一个字符串(例如“DEF”),并检查“log” div 中是否有任何 div 的文本与“DEF”匹配”。我的 JQuery 很弱,有人可以帮我解决这个问题吗?

4

5 回答 5

4
if ( $('#log div:contains("DEF")').length ) {
   // exists
}
于 2012-08-31T16:49:30.240 回答
3
$("#log").children("div").each(function(){
   if( $(this).text() == "DEF")
     //do something  
});
于 2012-08-31T16:55:32.377 回答
1

:contains您可以使用选择器从 id 制作选择器字符串:

function exists(id, content) {
  return $('#' + id + ' div:contains("' + content + '")').length > 0;
}

然而,这并不完全匹配。如果您想要一个完全包含 EAR 的 div,并且有一个包含 BEARS 的 div,您会得到一个误报。要进行完全匹配,您可以使用以下filter方法过滤元素:

function exists(id, content) {
  return $('#' + id).filter(function(){
    return $(this).text() == content;
  }).length > 0;
}

编辑:

要获取所有 div 的内容,请使用以下map方法:

var arr = $('#' + id + ' div').map(function(){
  return $(this).text();
}).get();
于 2012-08-31T16:51:33.567 回答
1
$('#log').find('div:contains("DEF")');

应该管用。

于 2012-08-31T16:52:22.613 回答
1
$searchThis = $('.log').html();
if($searchThis.indexOf('search string') != -1){
    actions upon success (you found the string)
}
于 2012-08-31T16:53:00.470 回答