代码之家  ›  专栏  ›  技术社区  ›  denisjacquemin

jquery最接近函数的原型等价物

  •  17
  • denisjacquemin  · 技术社区  · 16 年前

    jquery closest函数的原型中是否有等效的?

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

    谢谢

    2 回复  |  直到 14 年前
        1
  •  29
  •   PatrikAkerstrand    16 年前

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

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

    比较:

    .closest()。

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

    上()

    • 从父元素开始
    • 沿DOM树向上移动,直到找到所提供选择器的匹配项
    • 返回扩展元素对象,如果不匹配则返回未定义的对象

    您可以轻松地扩展原型,将此方法包含到所有元素中,例如:

    // 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
  •  2
  •   Diodeus - James MacFarlane    16 年前

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

    还有 .previous() , .down() 和 .up() ,取决于你在看什么。