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 に答える