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

时间:2010-03-02 20:06:47

标签: javascript prototypejs

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

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

感谢

2 个答案:

答案 0 :(得分:29)

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

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

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

比较:

.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);
   }
});

答案 1 :(得分:2)

.next('.className').next('divId')

还有.previous().down().up(),具体取决于您所查看的位置。