如何使用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
答案 0 :(得分: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之前会删除inserted元素。它适用于任何身体。
Demonstration (open the console)
编辑: