在给定元素和选择器的情况下,jQuery中有没有一种方法从DOM树的按顺序遍历中选择该元素之前的那个元素的最后一个匹配?jQuery:在指定元素之前选择最后一个匹配
例如,给DOM树:
<html>
<body>
<div class="a" id="div0" />
<div>
<div class="a" id="div1"/>
</div>
<div class="b" id="div2"/>
<div id="element"/>
<div class="a" id="div3"/>
<div class="b" id="div4"/>
</body>
</html>
使用选择.a
和元素#element
,你会得到#div1
,并使用选择.b
和元素#element
,你会得到#div2
。
用例正在编写GreaseMonkey脚本,以便在不同版本的Firefox中工作,并且有些稍微有些损坏的HTML。我有一个可以在所有版本中一致找到的元素,但是我想要查找的另一个元素是元素的祖先的前一个兄弟或该元素的祖先的前一个兄弟的后代(取决于版本)。
我真的可以依赖的是它是选择器的最后一个匹配,它发生在我有元素的时候,在进行DOM树的按顺序遍历时。
我找到真正的HTML更容易阅读这样的伪代码。 – gdoron 2012-03-05 18:46:15
我以前写过一个'realPrev'插件。请参阅:[jQuery .prev()类型,无论它的父母等](http://stackoverflow.com/a/7771241/938089?jquery-prev-of-a-type-regardless-of-its-parent-等等)。在你的情况下,你可以使用:$('#element')。realPrev('。a,#element');' – 2012-03-05 18:46:46
-1因为格式不正确的NOT HTML使得很难确定封闭/在你的例子中的divs。 – 2012-03-05 18:56:57