jQuery 中有没有一种方法,可以给定一个元素和一个选择器,从 DOM 树的有序遍历中选择该元素之前该选择器的最后一个匹配项?
例如,给定 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 树时出现在元素之前的选择器的最后一个匹配项。
最佳答案
使用您的第一个示例应该可以做到这一点:
var $collection = $(".a, #element");
var eleIndex = $collection.index($("#element"));
var prevEl = $collection.eq(eleIndex - 1);
alert(prevEl.attr("id"));
关于javascript - jQuery:选择指定元素之前的最后一个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9572012/