Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

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.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3789536
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 19, 20262026-05-19T12:10:19+00:00 2026-05-19T12:10:19+00:00

This is the HTML I’m working with: <ul id=categories> <li><a href=#cargo>Cargo Trailers</a></li> <div class=dropdown>

  • 0

This is the HTML I’m working with:

<ul id="categories">
  <li><a href="#cargo">Cargo Trailers</a></li>
  <div class="dropdown">
    <ul>
      <li><a href="#utility">Utility Trailers</a></li>
    </ul>
  </div>
</ul>

I have written a jQuery script to hide the dropdown div. The dropdown div appears the first time the click event is fired. Once the li in the dropdown div is selected and switches places with the first li in the #categories ul, clicking on the li will not bring up the dropdown div.

Here is the jQuery:

jQuery(document).ready(function($) {

// hide the dropdown div
$('#categories > div').hide();

/*
    Click the drop down arrow function
*/
var $listHeader = $('#categories > li');

$listHeader.click(function() {  

    if ( $('#categories > div:hidden') ) {
        //show the drop down
        $('#categories > div').show();
    } else {
        //hide the drop down
        $('#categories > div').hide();
    }
});


/*
    Click a list-item in the drop down function
*/
$('#categories > div a').click(function() {


    /* actions to change the title to the newly selected item */
    // hide the ul
    $('#categories > div').hide();

    // move the clicked item to the header
    $(this).prependTo('#categories > li');

    // move the previous title to the dropdown and sort
    $('#categories > li > a:eq(1)').prependTo('#categories > div > ul > li:empty');

    // Reset the listHeader variable
    $listHeader = $('#categories > li');

    // cancel default browser action
    return false;

});
});
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-19T12:10:20+00:00Added an answer on May 19, 2026 at 12:10 pm

    this $('#categories > div:hidden') will always return jQuery object (which evaluates to true), even if there are no elements matching selector. Use jQuery’s .toggle() instead of if...else:

    $('#categories > div').toggle();
    

    here’s an example to play with


    Update in response to your comment: Updated example – http://jsfiddle.net/Etkjr/1/

    You are correct, event handlers are unbound on DOM change. To prevent, that you would need to use 2 jQuery functions: .live() and .delegate. Both of them monitor DOM changes and rebind events to selectors when the DOM is changed.

    You want click on a first li to expand dropdown menu – use

    $('#categories li:first').live('click', function() {})
    

    this way clicking on a first li will trigger your handler, even if your li was just now moved to first position.

    $('#categories').delegate('.dropdown a', 'click', functon(evt) {})
    

    This is an example of .delegate(). This means that when someone clicks element matching .dropdown a inside the #categories this handler will be called.

    Here you can use .live() instead, but .delegate makes more sense. Instead of assigning (copying) event handler to all matching elements, we delegate all clicks to a single event handler.

    I also updated “moving” code. Interesting side effect here, is that you don’t need to .hide() dropdown inside the second handler. You see, when you click on a link inside dropdown, the link gets moved into first position. .live() detects that and assigns a click() handler to the link you just clicked. But event is still propagating, so after your second handler is finished, event bubbles up to li, and $('.li').live('click', ...) executes, hiding your dropdown div.

    Hope this makes sense.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Say I have jquery code like this: html += '<div class=index>' + item.index +
I have this HTML structure and want to convert it to an accordion. <div
Given this HTML: <ul id=topnav> <li id=topnav_galleries><a href=#>Galleries</a></li> <li id=topnav_information><a href=#>Information</a></li> </ul> And this
Given this HTML: <div>foo</div><div>bar</div><div>baz</div> How do you make them display inline like this: foo
Given this HTML snippet: <div id=box style=overflow:auto; width:200px; height:200px; border:1px solid black;> 1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br> 11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<br>19<br>20<br>
I have this html... <select id=View name=View> <option value=1>With issue covers</option> <option value=0>No issue
I have a page with this HTML: <p> <img src=images/ih01.jpg width=80 height=110 align=left />
Premise: I've started to study javascript and the DOM and I have this HTML
I have a site, from which you can download an HTML file. This HTML
I am using this HTML <html> <head> <Title>EBAY Search</title> </head> <script language=JavaScript src=ajaxlib.js></script> <body>

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.