使用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
最佳答案 不是一个非常好的解决方案,但我认为这样做.想法是找到所有粗体标签和光标元素,在结果数组中查找光标的位置,然后在它之前返回元素.
只是把它扔在一起,可能有更好的方法.如果你使用它,一些错误检查可能也是顺序.
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;
}