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;

}
Другие вопросы по тегам