使用Prototype按类名获取最远(最老)的祖先

时间:2012-03-22 22:47:06

标签: prototypejs traversal ancestor

今天我浪费了太多时间。我们假设我有这样的事情:

<div id="p1" class="hit">
<div id="p2" class="no-hit">
<div id="p3" class="hit">
<div id="p4" class="no-hit">
<div id="p5" class="hit">
el
</div></div></div></div></div>

所以我的元素被传递给一个函数,如果它是.hit元素的后代,我希望el与命中类(在这种情况下是#p1)中最老的祖先相等。

在jQuery中,它就像使用el.parents(“。hit”)并指向最后一个一样简单,但我正在处理遗留代码并且必须使用原型。以下代码适用于jsfiddle,但会在生产中导致非法令牌错误:

if(item.up('.hit') != undefined){
  while(item.up('.hit') != undefined){
    item = item.up('.hit');
  }
}

请原型,告诉我你有一个简单的方法来实现这一目标。

2 个答案:

答案 0 :(得分:0)

原型和jQuery在这方面是相似的(至少在我对文档的解释中)。您也应该能够在Prototype中使用.up方法。

您提供的代码也应该与Prototype一起使用。您可以看到示例here

如果没有,你可以随时尝试.previous方法。

答案 1 :(得分:0)

if(typeof item.up('.hit') != 'undefined') {
  while(typeof item.up('.hit') != 'undefined') {
    item = item.up('.hit');
  }
}