How to hide all elements except one div and its child element using jquery?
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Ignore that, does not appear to have the desired effect.
Perhaps the following?Update
The problem is, the visible state of a child DIV often relies on it’s parent being visible. So you need to have an entire tree down to the DIV you want remaining visible.
You need to hide everything apart from that tree, the trick is identifying all children of the DOM structure that are not in the DIV ancestry, and all siblings of the ones that are.
Finally!
Managed to write a solution. Tried a recursive approach at first, but on complicated pages it died with “too much recursion”, so wrote a list-based version that works just fine. It is in the form of a single-function jQuery plugin, as that seems to be the most useful approach.
This routine finds all elements within the
context(which defaults to<body>) that exclude the object and it’s ancestors.This would achieve the result of the question:
Another use could be to retain all objects within a container with a certain class, fading out all the others:
Bare in mind that the layout and positioning of any given element can depend heavily on surrounding elements, so hiding something like that is likely to alter the layout unless things are absolutely positioned. I can see uses for the routine anyhow.
However!
Another poster came up with the following which returns the same information using a routine already built-in to jQuery which I had not seen.
or without the variable
Which is a tad simpler, must scour documentation in future.
PS. If anyone has a better way of checking if a given jQuery object is equivalent to another than
a.filter(b).size() != b.size()I would be very glad to hear it!