jQuery - предыдущий узел - нет общего родительского узла
Используя 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>
Msgstr "Здесь данный узел находится в div#sec3
и целевой предыдущий узел находится в div#sec1
,
Если текущий данный узел $("span#cursorPos2")
то предыдущий жирный текст "<b>yet</b>
Msgstr "Здесь и данный узел, и целевой предыдущий узел находятся в одном div#sec3
,
По сути, иерархия не должна рассматриваться вообще. Из данного узла селектор должен просто найти предыдущее совпадение.
Пожалуйста, дайте мне знать, как это можно сделать.
Спасибо
Srikanth
1 ответ
Не очень хорошее решение, но я думаю, что это помогает. Идея состоит в том, чтобы найти все полужирные теги и элемент курсора, найти положение курсора в результирующем массиве, а затем вернуть элемент перед ним.
просто бросил это вместе, есть, вероятно, лучшие способы. если вы используете это, то, вероятно, тоже стоит проверить ошибки.
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;
}