Подтвердить что ты не робот

Прототип-эквивалент для ближайшей функции jQuery

Есть ли эквивалент в Prototype для ближайшей функции jQuery?

http://api.jquery.com/closest/

спасибо

4b9b3361

Ответ 1

Вы можете использовать метод up. Это не совсем эквивалентно, так как closest также рассматривает текущий элемент. Таким образом, вам нужно будет сначала проверить выбранный вами элемент, чтобы убедиться, что он соответствует вашим критериям, если это не так, используйте метод up -method:

jQuery:
return $('#id').closest('li');

Prototype:
var element = $('id')
return element.match('li') ? element : element.up('li');
}

Сравнение:

.closest()

  • Начинается с текущего элемента
  • Перемещает дерево DOM до тех пор, пока не найдет совпадение для поставляемого селектора
  • Возвращает объект jQuery, содержащий нуль или один элемент

.up()

  • Начинается с родительского элемента
  • Перемещает дерево DOM до тех пор, пока не найдет совпадение для поставляемого селектора
  • Возвращает объект расширенного элемента или undefined, если он не соответствует

Вы можете легко расширить Prototype, чтобы включить этот метод для всех таких элементов:

// Adds a closest-method (equivalent to the jQuery method) to all 
// extended Prototype DOM elements
Element.addMethods({
   closest: function closest (element, cssRule) {
      var $element = $(element);
      // Return if we don't find an element to work with.
      if(!$element) {
         return;
      }
      return $element.match(cssRule) ? $element : $element.up(cssRule);
   }
});

Ответ 2

.next('.className') или .next('divId')

Существует также .previous(), .down() и .up(), в зависимости от того, где вы ищете.