2015-12-24 59 views
1
<div class="news"> 
     <script type="text/javascript"> 

      some codes 

     </script> 

      needed content 

     <div class="seperator"> 

      unneeded content 

     </div> 

    unneeded content2 

</div>   

我想在這裏獲得「需要的內容」。所以我要刪除腳本標記,並得到所有文字直到div.seperator如何使用jquery在div中獲取特定文本

,如果我只是從根(div.news)獲取文本不包含子元素,我會解決我一定要洗子問題,或者另一種方式元素。

我該如何處理這個問題。

謝謝您的關注。

+0

寫一個答案:) – www139

+0

你可以將需要的內容包裝在一個「」(或任何標籤)中並給它一個ID或類嗎?以'.text()'爲目標會更容易# – Lauromine

+0

谷歌的一些搜索會給你這樣一個基本問題的答案;)。 – DeltaWeb

回答

1

使用contents()得到的所有節點,包括文本節點。然後使用.not($('*'))排除元素節點:

console.log($('.news').contents().not($('*')).text().trim()); //needed content
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="news"> 
 
    <script type="text/javascript"> 
 
    some codes 
 
    </script> 
 

 
    needed content 
 

 
    <div class="seperator"> 
 

 
    unneeded content 
 

 
    </div> 
 

 
</div>


根據您的更新後,您可以使用 previousSibling .seperator之前得到的文本節點:

console.log($('.seperator')[0].previousSibling.textContent.trim()); //needed content
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="news"> 
 
    <script type="text/javascript"> 
 
    some codes 
 
    </script> 
 

 
    needed content 
 

 
    <div class="seperator"> 
 

 
    unneeded content 
 

 
    </div> 
 

 
    unneeded content2 
 
</div>

+0

這是對我很有用,謝謝。只是我想問一些重要的事情。我現在更新問題。在這種情況下有什麼方法可以清除「不需要的內容2」嗎? – BlackEagle

+0

當然,看看我的更新。 –

+0

非常感謝 – BlackEagle

4

您可以使用contents()filter()來檢索元素中的textNode。嘗試:

var textNodes = $('.news').contents().filter(function() { 
    return this.nodeType == 3 && this.nodeValue.trim() != '' 
}).get(); 

console.log(textNodes[0].nodeValue.trim()); // = 'needed content' 

Example fiddle

+0

非常感謝你,這很好,但有時候它可能會超過一段腳本和div.seperator。所以它取決於例如需要內容
需要content2。在這種情況下,這個jquery將得到第一個需要的內容,但我也需要第二個。有沒有什麼方法可以讓文字直到div.spereator我的朋友? – BlackEagle

+1

爲此,您可以使用'text'創建所有返回的nodeValues的數組,並使用'join()'創建一個字符串,如下所示:https://jsfiddle.net/nmmpt94z/1/ –

1

嘗試使用母體的.childNodesDOM元件.news,選擇節點在索引2

$(".news")[0].childNodes[2].nodeValue.trim() 

可替代地,使用關於父.news.childNodes,節點for迴路,其中.previousElementSibling.tagName"SCRIPT"

var nodes = document.querySelector(".news").childNodes; 
 
for (var i = 0; i < nodes.length; i++) { 
 
    if (nodes[i].previousElementSibling 
 
     && nodes[i].previousElementSibling.tagName === "SCRIPT") { 
 
    console.log(nodes[i].nodeValue.trim()); 
 
    break; 
 
    } 
 
}
<div class="news"> 
 
     <script type="text/javascript"> 
 

 
      //some codes 
 

 
     </script> 
 

 
      needed content 
 

 
     <div class="seperator"> 
 

 
      unneeded content 
 

 
     </div> 
 

 
</div>

相關問題