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
4

1 回答 1

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 之前,插入的元素会被移除。它适用于任何类型的身体。

演示(打开控制台)

编辑 :

使用编辑的 HTML 进行演示(打开控制台)

于 2012-11-14T10:11:18.870 回答