2012-05-19 6 views
2

Еще один вопрос о превосходной JQueryJquery найти предыд элемент с таким же классом по йоту

Я хочу найти Dóm элемент с классом сказать, азбука, когда я нажимаю на элемент с таким же классом. Теперь поиск должен быть точно предыдущим.

Код я написал:

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

Это поиск назад предыдущий РОМ родителя и поиск а, но если класс «а» оленью кожу существовать в предыдущем йоте, я хочу, чтобы искать до тех пор, пока не найдет азбуку, Также пробовал с prevvertil jquery по-прежнему не повезло.

Если кто-нибудь может мне помочь, большое спасибо.

+1

Было бы полезно включить ваш HTML, чтобы увидеть ваше дерево DOM. – kapa

+0

Дерево домиков сложное и специфическое, я хочу универсальное решение. – abhijit

+0

Если класс не существует в предыдущем DOM, вы хотите продолжать поиск, но где именно вы хотите искать, какой-либо другой DOM? – adeneo

ответ

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 

I woul d не сказать, что это самый эффективный код, но, не зная дерева DOM, это лучшее, что я могу придумать. Если вы только перезагрузили $('.abc'), когда DOM мог быть изменен и использовать только кешированную версию ($elems), все должно быть хорошо.

+0

Намного приятнее, чем моя уродливая петля! +1 – bfavaretto

+0

thats то, что я искал bu, задал тот же вопрос, который вы задали мне, если класс не так ли? Большое спасибо за ваше время, позвольте мне оценить это в соответствии с моими потребностями и буду держать вас в курсе и опубликовать свой ответ в ближайшее время, или если это будет означать как ответ. Спасибо – abhijit

+0

@abhi Извините, я не понимаю вашу проблему. – kapa

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"); 
}); 
+0

К сожалению, пример обновлен, у него возникла серьезная проблема. См. Рабочую версию здесь: http://jsfiddle.net/TKZz8/ – bfavaretto

+0

очень приятно спасибо за ответ, я использовал выше, так как это меньше с циклом, +1. – abhijit

 Смежные вопросы

  • Нет связанных вопросов^_^