Вот мое решение:
http://jsbin.com/oteze/9
Я проверял это на Firefox 3.6.8.
ДОБАВИТЬ: Теперь это работает и в IE7.
Вы можете вкладывать любое количество подменю в любом месте. Просто так:
<li><a href="#">Child 1.2</a>
<ul class="child">
<li><a href="#">Child 1.2.1</a></li>
<li><a href="#">Child 1.2.2</a></li>
</ul>
</li>
Я немного изменил ваш код, поэтому есть разница между подменю первого уровня и другими уровнями. Я также переместил всю логику показа / скрытия в JS.
$(document).ready(function() {
$("#Programming ul.child-first-level").hide();
$("#Programming ul.child").hide();
$("#Programming ul.child").each(function(index) {
$(this).css("margin-left", $(this).parent().css("width"));
});
$("#Programming li ul.child-first-level").parent().hover(
function() {
$(this).children("ul").fadeIn();
},
function() {
$(this).children("ul").stop(true, true).css("display", "none");
}
);
$("#Programming li ul.child").parent().hover(
function() {
var offset = $(this).children("ul").offset();
offset.top = 0;
$(this).children("ul").offset(offset);
$(this).children("ul").css("margin-left", $(this).parent().css("width"));
$(this).children("ul").fadeIn();
},
function() {
$(this).children("ul").stop(true, true).css("display", "none");
}
);
});