2012-11-14 24 views
3

如何獲取使用Javascript/jQuery的特定元素之前的正文文本? 我想要實現的是找出身體元素方面的位置,例如,如果正文文本長度爲100個字符,並且節點之前的文本爲50個,則該節點將佔50%。 獲取身體的長度很容易,但在元素之前獲取文本並不像我第一次想到的那樣微不足道。在元素之前獲取文本

編輯:

爲了明確這一點,我就舉一個例子:

<body> 
    <p> 
     ...some text <span>that could have sub-elements</span> 
    </p> 
    <p> 
     ...some text 
     <ul> 
     <li>now with a list</li> 
     <li>why not?</li> 
     </ul> 
    </p> 
    <div> 
     <p>...some text...</p> 
     <div> 
      <p>...some text...</p> 
      <p id="this_is_the_element">what's there in the body before this element?</p> 
      <p>...some text...</p> 
      <p>...some text...</p> 
     </div 
    </div> 
</body> 

在這種情況下,特定節點是#this_is_the_element和我期望得到的是這樣的:

...some text that could have sub-elements 
...some text 
now with a list 
why not? 
...some text 
...some text 
+1

你可以包括一些HTML來說明你想實現什麼? – FixMaker

回答

5

我可以提出這個功能:

​function textUntil($element) { 
    var T = '#~~~#'; 
    var $marquer = $('<span>'+T+'</span>'); 
    $marquer.insertBefore($element); 
    var text = $(document.body).text().split(T)[0]; 
    $marquer.remove(); 
    return text; 
} 

訣竅是插入一個獨特的標記,並獲取文本,直到這個標記。當然,插入的元素在HTML呈現之前被移除。它適用於任何類型的身體。

Demonstration (open the console)

編輯:

Demonstration with the HTML of your edit (open the console)

+1

輝煌!多少次我可以upvote你的答案? :P – davids

+1

真的很聰明!感謝分享故障;) –