Expand my Community achievements bar.

Dive into Adobe Summit 2024! Explore curated list of AEM sessions & labs, register, connect with experts, ask questions, engage, and share insights. Don't miss the excitement.

Is there a better way to find the parent?

Avatar

Level 2

For speed - I coded the block below - in order to find the index of a parent.

I need to find a specific subform parent - "part".

This could be in any number of levels - so I need to spread out my search.

When the parent is found - tIndex stores the index of that parent.

There must be a better way to code for this....

This code looks really horrible:

if

(obj.parent.name==

"part")

{

var tIndex =

obj.parent.index;

}

if(obj.parent.parent.name==

"part")

{

var tIndex =

obj.parent.parent.index;

}

if(obj.parent.parent.parent.name==

"part")

{

var tIndex =

obj.parent.parent.parent.index;

}

if(obj.parent.parent.parent.parent.name==

"part")

{

var tIndex =

obj.parent.parent.parent.parent.index;

}

if(obj.parent.parent.parent.parent.parent.name==

"part")

{

var tIndex =

obj.parent.parent.parent.parent.parent.index;

}

if(obj.parent.parent.parent.parent.parent.parent.name==

"part")

{

var tIndex =

obj.parent.parent.parent.parent.parent.parent.index;

}

if(tIndex==null

)

1 Reply

Avatar

Level 6

How about something like this (untested!).  It should return the index of the most immediate parent that is named part or -1 if none found.

function findIndex(myObj)
{
var ind = -1;
var obj = myObj.parent;

while (obj != null)
  {
  if (obj.name == "part")
   {
   ind = obj.index;
   break;
   }
  else
   obj = obj.parent;
  }

ret ind;
}