I'm using a CSS menu with an HTML structure like:
<div class="toolmenu" style="min-width:800px">
<ul>
<li><a class="dropdown left" href="#">Main A</a></li>
</ul>
<ul>
<li><a class="dropdown right" href="#">Main B<span class="tm-arrow">▼</span></a>
<ul class="tm-width-2">
<li><a href="#">Sub i</a></li>
<li><a href="#">Sub ii</a></li>
<li><a href="#">Sub iii</a></li>
<li><a href="#">Sub iv</a></li>
</ul>
</li>
</ul>
</div>
The CSS can be seen in this jsFiddle.
It works great, except that the sub-menu does not close once an item is clicked. Since the menu items trigger an Ajax update to the page, it makes for a quirky UI experience.
To solve that problem, I tried a little JavaScript:
$('div.toolmenu ul li ul li a').click(function () {
var grand = $(this).parent().parent();
grand.css('display', 'none');
setInterval(function () {
grand.css('display', '');
}, 300);
});
That works wonderfully in most browsers. IE, however, behaves as follows:
- Submenu disappears on click
- Submenu reappears after setInterval's callback fires
How can I make this work in IE as well? Is there a better approach to causing the submenu to disappear after it is clicked?