Home > Net >  nth parent of each filtered element in Jquery
nth parent of each filtered element in Jquery

Time:09-07

I have a requirement where I need to find out 4th parent for each filtered item from jQuery.

$("a.dropdown-toggle").filter(function() {
     return $(this).text().indexOf('ADD_DELET') > -1
}).parents().eq(4);

If the above filter function is returning single value , above code is working fine but if the filter function is returning more than one item. Above code is not working.

CodePudding user response:

.eq(4) is selecting element 4 from all the parents of all selected dropdowns, not the 4th parent of each.

Use a .each() loop that adds the appropriate parent to a collection.

There's also no need to use filter(), you can use the :contains() selector.

let parents = $([]); // empty collection
$("a.dropdown-toggle:contains(ADD_DELET)").each(function() {
    parents = parents.add($(this).parents().eq(4));
});

It would be easier if you gave those parents a unique class, then you could use .closest():

let parents = $("a.dropdown-toggle:contains(ADD_DELET)").closest(".classname");

This is more robust than counting parents, since it won't break if the organization is modified to add or remove nesting levels.

  • Related