#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 в той же таблице. Крис