# :hidden Selector

Categories: Selectors > jQuery Extensions | Selectors > Visibility Filter

## hidden selector

#### version added: 1.0jQuery(':hidden')

Description: Selects all elements that are hidden.

Elements can be considered hidden for several reasons:

- They have a CSS `display` value of `none`.
- They are form elements with `type="hidden"`.
- Their width and height are explicitly set to 0.
- An ancestor element is hidden, so the element is not shown on the page.

Elements with `visibility: hidden` or `opacity: 0` are considered to be visible, since they still consume space in the layout. During animations that hide an element, the element is considered to be visible until the end of the animation. During animations to show an element, the element is considered to be visible at the start of the animation.

How `:hidden` is determined was changed in jQuery 1.3.2. An element is assumed to be hidden if it or any of its parents consumes no space in the document. CSS visibility isn't taken into account (therefore `$(elem).css('visibility','hidden').is(':hidden') == false`). The release notes outline the changes in more detail.

### Additional Notes:

- Because `:hidden` is a jQuery extension and not part of the CSS specification, queries using `:hidden` cannot take advantage of the performance boost provided by the native DOM `querySelectorAll()` method. To achieve the best performance when using `:hidden` to select elements, first select the elements using a pure CSS selector, then use `.filter(":hidden")`.

### Example:

#### Shows all hidden divs and counts hidden inputs.

    <!DOCTYPE html>
    <html>
    <head>
      <style>
      div { width:70px; height:40px; background:#ee77ff; margin:5px; float:left; }
      span { display:block; clear:left; color:red; }
      .starthidden { display:none; }
      </style>
      <script src="http://code.jquery.com/jquery-1.7rc2.js"></script>
    </head>
    <body>
      <span></span>
      <div></div>
      <div style="display:none;">Hider!</div>
      <div></div>

      <div class="starthidden">Hider!</div>
      <div></div>
      <form>
        <input type="hidden" />

        <input type="hidden" />
        <input type="hidden" />
      </form>
      <span>

      </span>
    <script>
    // in some browsers :hidden includes head, title, script, etc...
    var hiddenEls = $("body").find(":hidden").not("script");

    $("span:first").text("Found " + hiddenEls.length + " hidden elements total.");
    $("div:hidden").show(3000);
    $("span:last").text("Found " + $("input:hidden").length + " hidden inputs.");
    </script>

    </body>
    </html>

#### Demo: