2

关于优秀 jQuery 的另一个问题

当我单击具有相同类的元素时,我想找到一个类说 abc 的 dom 元素。现在搜索应该正好是前一个元素。

我写的代码:

$(this)
    .closest('.abc')
    .parent()
    .prevAll()
    .find('.abc')
    .first()
    .triggerHandler("focus");

这是搜索父级以前的dom并搜索abc,但是如果以前的dom中不存在类'abc',我想搜索直到找到abc,也尝试使用jquery的prevuntil仍然没有运气。

如果有人可以帮助我,非常感谢。

4

2 回答 2

6

您可以使用它来获取上一个元素:

var $current = $(this); //the element you have
var $elems = $('.abc'); //the collection of elements

var $previous = $elems.eq($elems.index($current) - 1); //the one you needed

我不会说这是最有效的代码,但在不了解 DOM 树的情况下,这是我能想到的最好的代码。如果您仅$('.abc')在 DOM 可能已更改时重新运行并且仅使用缓存版本 ( $elems) 应该没问题。

于 2012-05-19T16:25:57.503 回答
2

这是一种快速而肮脏的方法:

$('.abc').click(function(){
    var clicked = this;
    var last;
    // Go though all elements with class 'abc'
    $('.abc').each(function(){
        if(this == clicked) return false;
        last = this;
    });
    if(last) $(last).triggerHandler("focus");
});
于 2012-05-19T16:18:40.787 回答