jQuery – предыдущий узел – нет общего родительского узла

StackOverflow https://stackoverflow.com/questions/3310447

Вопрос

Используя 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.

По сути, иерархию вообще не следует учитывать.Из данного узла селектор должен просто найти предыдущее совпадение.

Пожалуйста, дайте мне знать, как это можно сделать.

Спасибо
Шрикантх

Это было полезно?

Решение

Не очень хорошее решение, но я думаю, что это поможет.Идея состоит в том, чтобы найти все теги, выделенные жирным шрифтом, и элемент курсора, найти положение курсора в результирующем массиве, а затем вернуть элемент перед ним.

просто собрал это вместе, возможно, есть способы получше.если вы используете это, вероятно, вам также потребуется некоторая проверка ошибок.

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;

}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top