2016-03-13 126 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留在主線程中,那麼你可以去克隆元素並添加它。