jQuery closest函数的原型等效方法

17
2个回答

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

2

.next('.className') 或者 .next('divId')

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接