jQuery - 前のノード - 共通の親ノードなし
-
27-09-2020 - |
質問
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>
"になります。ここで、所定のノードはdiv#sec3
にあり、ターゲット前のノードはdiv#sec1
にあります。
現在の指定されたノードが$("span#cursorPos2")
の場合、前の太字のテキストは "<b>yet</b>
"です。ここで、指定されたノードとターゲット前のノードの両方が同じdiv#sec3
にあります。
基本的には、階層はまったく考慮されてはいけません。特定のノードから、セレクタは単に前の試合を見つける必要があります。
これがどのように行うことができるかについて教えてください。
ありがとう
Srikanth
解決
とても素敵な解決策ではなく、これがトリックをすると思います。アイデアは、すべての太字のタグとカーソル要素を見つけること、結果の配列のカーソルの位置を探してから、その前に要素を返します。
まだ一緒に投げた、おそらくより良い方法があります。これを使用している場合は、おそらく順番にエラーチェックがあります。
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;
}
. 所属していません StackOverflow