关于高级jQuery的另外一个问题
当我点击具有相同类的元素时,我想找到一个带有类的dom元素,例如abc。现在搜索应该是前一个元素。
我编写的代码:
$(this)
.closest('.abc')
.parent()
.prevAll()
.find('.abc')
.first()
.triggerHandler("focus");
这是回顾父母的前一个dom并搜索abc,但是如果类'abc'在前一个dom中不存在,我想搜索直到找到abc,同时尝试使用junery的prevuntil仍然没有运气。
如果有人可以帮助我,非常感谢。
答案 0 :(得分:5)
您可以使用它来获取前一个元素:
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树,那就是我能想到的最好的代码。如果您只在DOM可能已更改且仅使用缓存版本($('.abc')
)时重新运行$elems
,则应该没问题。
答案 1 :(得分: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");
});