4

使用 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.

基本上,根本不应该考虑层次结构。从给定的节点,选择器应该简单地找到前面的匹配。

请让我知道如何做到这一点。

谢谢斯里坎特
_

4

1 回答 1

2

不是一个很好的解决方案,但我认为这可以解决问题。想法是找到所有粗体标签和光标元素,在结果数组中查找光标的位置,然后返回它之前的元素。

只是把这个放在一起,可能有更好的方法。如果你使用它,一些错误检查可能也是为了。

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;

}
于 2010-07-22T16:06:28.717 回答