2016-03-13 84 views
0

所以我有一个Facebook对话的HTML页面。问题是所有的对话都是混合的。所以我想与我指定的人进行对话。该人的姓名在div内容中。这里是什么样子:获取特殊内容的所有div

<div class="thread"> myName, ContactName 
    <div class="message">...</div> 
    <p>message</p> 
    <div class="message">...</div> 
    <p>message</p> 
</div> 

所以现在我只是做了这一点:

<p id="test"></p> 
<script> 
var one = $(".thread").html(); 
$("#test"). 
$(".contents").hide(); 
</script> 

我的目标是让所有包含ContactName div和在test段例如显示它。 我想知道是否有更好的方法来获得所有特定的div而不是使用if one[i].innerHTML.indexOf("word") //do something。我想知道如何直接访问div中的html,我把<p>放在我的例子中,但我认为div更合适。

感谢您的帮助。

+0

如果您正在尝试搜索文本,那么.indexOf或.test是要走的路线 – Stuart

+0

是否要自动过滤邮件?或者你想放置一个文本框和一个按钮,然后在文本框中填写用户名并点击按钮来过滤掉消息? – Ram

+0

不,我只是把我的脚本直接放在我的页面nobutton。那么我会尝试与索引tomorow然后。但是如果有人有更好的主意。 – king

回答

2

您可以使用css选择器:contains并轻松完成此操作。 Working JsFiddle

$(function() { 
 
    var filterByName = "Raj"; //filter by this name 
 
    var filteredDivs = $('.thread:contains("'+ filterByName +'")'); 
 
    $('#output').append(filteredDivs); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="thread"> Raj, ContactName 
 
    <div class="message">...</div> 
 
    <p>message</p> 
 
    <div class="message">...</div> 
 
    <p>message</p> 
 
</div> 
 
<div class="thread"> Max, ContactName 
 
    <div class="message">...</div> 
 
    <p>message</p> 
 
    <div class="message">...</div> 
 
    <p>message</p> 
 
</div> 
 
<div class="thread"> Raj, ContactName 
 
    <div class="message">...</div> 
 
    <p>message</p> 
 
    <div class="message">...</div> 
 
    <p>message</p> 
 
</div> 
 

 
<hr/> 
 
<h2> 
 
Output of Filtered Divs 
 
</h2> 
 

 
<div id="output"> 
 
</div>

输出DIV现在有过滤div的。如果你想让div留在主线程中,那么你可以去克隆元素并添加它。