我正在尝试获取特定元素的最近/最近的类。
我怎样才能让它发挥作用?我目前正在尝试使用.closest。
HTML
<div class="test">.test</div> <!-- Not this -->
<div>
<div class="test">.test</div> <!-- That's the one I need to grab -->
</div>
<div id="test"></div> <!-- This is the reference element -->
<div class="another"></div>
<div class="another"></div>
<div class="test">.test</div>
JS
var test = $('#test2').closest('.test');
console.log(test);
如果最接近正确的方法,我怎样才能真正抓住最接近的测试&#39;类?
我也尝试过parentUntil()。
实际上,如果这有用,在我的用例中,我总是需要特定类的最近的PARENT元素,无论该父元素是否在另一个元素内,就像在这个HTML示例中一样。
答案 0 :(得分:2)
如果我理解正确,那么您正在寻找在HTML源顺序中出现在特定元素之前的最近元素(并且您不知道/无法更改HTML结构)。最简单的解决方案是:
jQuery()
个集合按元素在DOM中出现的顺序排序(除非文档另有说明)。所以我们有:
$("#test, .test")
// [div.test, div.test, div#test, div.test]
// ^ ^
// | +---- reference element
// +-------------- nearest element before it
//
// notice that the elements are sorted in the order they appear in HTML
只需将其与jQuery.index()
结合使用:
$(function() {
var $ref = $("#test");
var $col = $(".test").add($ref);
var index = $col.index($ref);
$col.eq(index - 1).css("background-color", "orange");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="test">.test</div> <!-- Not this -->
<div>
<div class="test">.test</div> <!-- That's the one I need to grab -->
</div>
<div id="test"></div> <!-- This is the reference element -->
<div class="another"></div>
<div class="another"></div>
<div class="test">.test</div>
答案 1 :(得分:0)
不确定,为什么你的HTML结构如此,但这应该选择你需要的div:
$('.test',$('#test2').prev('div')).text() // find a div with class test, contained within div that lies previous to #test2
答案 2 :(得分:0)
最近搜索DOM树中的父元素。对于兄弟姐妹,你不能轻易地获得最近的,但如果你知道方向上/下你可以选择.nextAll('。test:first')和prevAll('。test:first')。