4

jQuery を使用して、特定のノードから前のノードを見つけたいと思います。先行するノードと指定されたノードは、同じ親ノードを持っていない可能性があります! 次のフラグメントを確認してください。

<div class="container">
<div id="sec1">
    <p>Some text</p>
    <p><b>Some</b> text<</p>
    <p>Some <b>more</b> text</p>
</div>
<div id="sec2">
    <p>just a text</p>
</div>
<div id="sec3">
    <p>another <span id="cursorPos1"></span>text</p>
    <p><b>yet</b> another<span id="cursorPos2"></span> text</p>
</div>

現在の指定されたノードが$("span#cursorPos1")であり、検索したいのが先行する太字のテキストである場合、結果は " <b>more</b>" になるはずです。ここで、与えられたノードは indiv#sec3であり、ターゲット先行ノードは indiv#sec1です。

現在指定されているノードが$("span#cursorPos2")の場合、前の太字テキストは " <b>yet</b>" です。ここでは、指定されたノードと対象の先行ノードの両方が同じ にあり div#sec3ます。

基本的に、階層はまったく考慮されるべきではありません。指定されたノードから、セレクターは単に前の一致を見つける必要があります。

これを行う方法を教えてください。

ありがとう
_

4

1 に答える 1

2

あまり良い解決策ではありませんが、これでうまくいくと思います。アイデアは、太字のタグとカーソル要素をすべて見つけ、結果の配列でカーソルの位置を探し、その前の要素を返すことです。

これをまとめただけで、おそらくもっと良い方法があります。これを使用する場合は、おそらくいくつかのエラー チェックも適切です。

prevBold = function(myId) {

var boldAndMe = $('#' + myId + ', b').toArray();
    var me = $('#' + myId).get(0);
    var myPos = boldAndMe.indexOf( me );

    return myPos > 0 ? $( boldAndMe[myPos-1] ) : null;

}
于 2010-07-22T16:06:28.717 に答える