#4345 closed feature (fixed)
add isDescendantOf and isAncestorOf
Reported by: | ap | Owned by: | |
---|---|---|---|
Priority: | low | Milestone: | |
Component: | selector | Version: | 1.3.2 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
It would be handy to test if an element is a parent/child of another element. This is particularly useful when handling event bubbling to determine if an event has already been handled (this is the most reliable technique I have found to date that works in most modern browsers).
I expect it would look something like this:
jQuery('#blah').isAncestorOf(someElement) and jQuery('#blah').isDescendantOf(someElement)
Alternatively but less accurately it could be called isParentOf/isChildOf.
My existing JS implementation runs in logarithmic time and is as follows:
/ test if a is a descendant of b */ function isDescendantOf(a, b) {
return isAncestorOf(b, a);
}
/ test if a is an ancestor of b */ function isAncestorOf(a, b) {
test if a is in b's parent chain var o = b; while (o) {
if (o === a)
return true;
o = o.parentNode; }
return false;
}
Having this as part of jQuery would be convenient.
Change History (4)
comment:1 Changed 14 years ago by
comment:2 Changed 14 years ago by
Also see this epic thread from jQuery-Dev:
http://groups.google.com/group/jquery-dev/browse_frm/thread/ac5ca8eaa64fe9f1/8b3cfed47617cb5d
comment:3 Changed 12 years ago by
Component: | core → selector |
---|---|
Keywords: | needsreview added; isancestor isancestorof isdescendant isdescendantof ischild ischildof isparent isparentof removed |
Milestone: | 1.4 |
Priority: | minor → low |
Status: | new → open |
Bringing this back for review
comment:4 Changed 12 years ago by
Keywords: | needsreview removed |
---|---|
Resolution: | → fixed |
Status: | open → closed |
Related to #4101.