jQuery найти ближайший

Мне нужно было найти ближайший элемент относительно другого элемента. Я хотел, чтобы общая функция не была привязана к конкретной древовидной структуре. Возможно, он уже существует в jQuery, и если да, то покажите мне! Вот что я придумал, и это работает для того, что мне нужно:

$.fn.nearest = function(s) {
    var o = {};
    var p = $(this).parent();
    while(p.length) {
        if(p.find(s).length) {
            o = p.find(s).first();
            break;
        }
        else {
           p = p.parent();
        }
    }
    return o;
};

-Крис


person Christian    schedule 01.11.2011    source источник
comment
Каково ваше определение ближайшего?   -  person jfriend00    schedule 02.11.2011
comment
Отлично! Чтобы сделать его совместимым со стандартными типами возврата таких функций jquery, мы лучше изменим вторую строку с var o = {}; к вар о = [];   -  person Yossi Shasho    schedule 30.04.2012
comment
На самом деле, я думаю, что o = $(); было бы лучше для совместимости.   -  person The_Black_Smurf    schedule 25.04.2014


Ответы (1)


Рассматривали ли вы jQuery .closest()?

person James Hill    schedule 01.11.2011
comment
Ну, у меня есть сайт, где у меня есть несколько флажков, которые на самом деле предлагает посетителям заказать. Эти предложения не уникальны и могут быть на нескольких страницах. Иногда они обернуты в разные html или ярлыки. Мне нужно было установить флажок «ближайший» при нажатии на соединительную метку. На самом деле я хотел проверить все, но только добавить объект данных в один из них. Closest() поднимается только вверх по DOM, он не найдет элементы в другом td в той же таблице. Крис - person Christian; 02.11.2011