jQuery - предыдущий узел - нет общего родительского узла - PullRequest
4 голосов
/ 22 июля 2010

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

1 Ответ

2 голосов
/ 22 июля 2010

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

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

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;

}
...