原型等效于jQuery最接近的函数

den*_*min 17 javascript prototypejs

在jQuery最近函数的Prototype中是否有任何等价物?

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

谢谢

Pat*_*and 29

您可以使用该up方法.它并不完全等同,因为它closest也考虑了当前元素.因此,您需要首先测试所选元素以查看它是否符合您的条件,如果不符合,请使用up-method:

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

Prototype:
var element = $('id')
return element.match('li') ? element : element.up('li');
}
Run Code Online (Sandbox Code Playgroud)

比较:

.closest()

  • 从当前元素开始
  • 向上移动DOM树,直到找到所提供选择器的匹配项
  • 返回包含零个或一个元素的jQuery对象

.UP()

  • 从父元素开始
  • 向上移动DOM树,直到找到所提供选择器的匹配项
  • 返回扩展的Element对象,如果不匹配则返回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);
   }
});
Run Code Online (Sandbox Code Playgroud)