Попробуйте заменить a.setting:hover ul {...}
на
a.setting:hover + ul,
ul.submenu:hover {...}
Отредактированная скрипка:
http://jsfiddle.net/AnUZ7/4/
Селектор .first + .second
выбирает следующий элемент после .first
.
Селектор .first ~ .after-first
выбирает все элементы после .first
.
Эти селекторы не работают в Internet Explorer 6, но, надеюсь, это не большая проблема в 2011 году.
Остерегайтесь (возможного) поля / отступов / других пробелов между a
и ul
в вашем фактическом дизайне! Если указатель мыши окажется между ними, меню исчезнет.