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

#jquery #parent #closest

#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;
};
 

-Крис

Комментарии:

1. Каково ваше определение понятия «ближайший»?

2. Отлично! чтобы сделать его совместимым со стандартными типами возвращаемых данных таких функций jquery, нам лучше изменить вторую строку с var o = {}; на var o = [];

3. На самом деле, я думаю o = $(); , так было бы лучше для совместимости.

Ответ №1:

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

Комментарии:

1. Ну, у меня есть сайт, где у меня есть несколько флажков, которые на самом деле предлагают посетителям сделать заказ. Эти предложения не уникальны и могут быть на нескольких страницах. Иногда они заключены в разные HTML-коды или ярлыки. Мне нужно было установить флажок «ближайший» при нажатии на соединительную метку. На самом деле я хотел проверить все, но добавить объект данных только к одному из них. Closest() идет только вверх по DOM, он не найдет элементы, например, другой td в той же таблице. Крис