Ваш код работает нормально! Тот факт, что он полностью разрушается, обусловлен выбором списков UL. Если этого не ожидается, вы можете заменить его, как показано ниже, ограничив выбор первым дочерним элементом UL.
То же самое относится и к подменю.
$("#menu").hover(function() {
$(this).children('ul').first().slideDown("slow");
}, function() {
$(this).children('ul').first().slideUp("slow");
});
$("li:has('label.drop-icon')").hover(function() {
$(this).children('ul').first().slideDown("slow");
}, function() {
$(this).children('ul').first().slideUp("slow");
});
#menu ul {
margin: 0;
padding: 0;
}
#menu .main-menu {
display: none;
}
#tm:checked + .main-menu {
display: block;
}
#menu input[type="checkbox"],
#menu ul span.drop-icon {
display: none;
}
#menu li,
#toggle-menu,
#menu .sub-menu {
border-style: solid;
border-color: rgba(0, 0, 0, .05);
background-color: rgba(71, 94, 97);
}
#menu li,
#toggle-menu {
border-width: 0 0 1px;
}
#menu .sub-menu {
background-color: #444;
border-width: 1px 1px 0;
margin: 0 1em;
}
#menu .sub-menu li:last-child {
border-width: 0;
}
#menu li,
#toggle-menu,
#menu a {
position: relative;
display: block;
color: white;
text-shadow: 1px 1px 0 rgba(0, 0, 0, .125);
}
#menu,
#toggle-menu {
background-color: #09c;
}
#toggle-menu,
#menu a {
padding: 1em 1.5em;
}
#menu a {
text-decoration: none;
}
#menu a:hover {
background-color: #9ba2a3;
color: #f0f4f5;
}
#menu .sub-menu {
display: none;
}
#menu input[type="checkbox"]:checked + .sub-menu {
display: block;
}
#menu .sub-menu a:hover {
color: #444;
}
#toggle-menu .drop-icon,
#menu li label.drop-icon {
position: absolute;
right: 1.5em;
top: 1.25em;
}
#menu label.drop-icon, #toggle-menu span.drop-icon {
border-radius: 50%;
width: 1em;
height: 1em;
text-align: center;
background-color: rgba(0, 0, 0, .125);
text-shadow: 0 0 0 transparent;
color: rgba(255, 255, 255, .75);
}
#menu .drop-icon {
line-height: 1;
}
@media only screen and (max-width: 64em) and (min-width: 52.01em) {
#menu li {
width: 33.333%;
}
#menu .sub-menu li {
width: auto;
}
}
@media only screen and (min-width: 52em) {
#menu .main-menu {
display: block;
}
#toggle-menu,
#menu label.drop-icon {
display: none;
}
#menu ul span.drop-icon {
display: inline-block;
}
#menu li {
float: left;
border-width: 0 1px 0 0;
}
#menu .sub-menu li {
float: none;
}
#menu .sub-menu {
border-width: 0;
margin: 0;
position: absolute;
top: 100%;
left: 0;
width: 12em;
z-index: 3000;
}
#menu .sub-menu,
#menu input[type="checkbox"]:checked + .sub-menu {
display: none;
}
#menu .sub-menu li {
border-width: 0 0 1px;
}
#menu .sub-menu .sub-menu {
top: 0;
left: 100%;
}
#menu li:hover > input[type="checkbox"] + .sub-menu {
display: block;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<nav id="menu">
<label for="tm" id="toggle-menu">Menu <span class="drop-icon">▾</span></label>
<input type="checkbox" id="tm">
<ul class="main-menu clearfix">
<li><a href="#">Inicio</a></li>
<li><a href="#">Por habitación
<span class="drop-icon">▾</span>
<label title="toggle drop-down" class="drop-icon" for="PorHabitacion">▾</label>
</a>
<input type="checkbox" id="PorHabitacion">
<ul class="sub-menu">
<li><a href="#">Cocina</a></li>
<li><a href="#">Sala</a></li>
<li><a href="#">Comedor</a></li>
<li><a href="#">Balcón</a></li>
<li><a href="#">Baño</a></li>
<li><a href="#">Home-office</a></li>
<li><a href="#">Dormitorio
<span class="drop-icon">▾</span>
<label title="toggle drop-down" class="drop-icon" for="Dormitorios">▾</label>
</a>
<input type="checkbox" id="Dormitorios">
<ul class="sub-menu">
<li><a href="#">Principal</a></li>
<li><a href="#">Nursery</a></li>
<li><a href="#">Infantil</a></li>
<li><a href="#">Juvenil</a></li>
</ul>
</li>
<li><a href="#">Exterior
<span class="drop-icon">▾</span>
<label title="toggle drop-down" class="drop-icon" for="Exterior">▾</label>
</a>
<input type="checkbox" id="Exterior">
<ul class="sub-menu">
<li><a href="#">Jardín</a></li>
<li><a href="#">Balcón</a></li>
<li><a href="#">Terraza</a></li>
</ul>
</li>
</ul>
</li>
<ul>
<li><a href="#">Por tipo
<span class="drop-icon">▾</span>
<label title="toggle drop-down" class="drop-icon" for="PorTipo">▾</label>
</a>
<input type="checkbox" id="PorTipo">
<ul class="sub-menu">
<li><a href="#">Departamento</a></li>
<li><a href="#">Casa</a></li>
<li><a href="#">Loft</a></li>
<li><a href="#">Oficina</a></li>
<li><a href="#">Hotel</a></li>
<li><a href="#">Comercio</a></li>
</ul>
</li>
</ul>
<ul>
<li><a href="#">Decoración
<span class="drop-icon">▾</span>
<label title="toggle drop-down" class="drop-icon" for="Decoracion">▾</label>
</a>
<input type="checkbox" id="Decoracion">
<ul class="sub-menu">
<li><a href="#">Iluminación</a></li>
<li><a href="#">Electrodomésticos</a></li>
<li><a href="#">Menaje</a></li>
<li><a href="#">Muebles</a></li>
<li><a href="#">Objetos</a></li>
</ul>
</li>
</ul>
<ul>
<li><a href="#">Ideas y Guías
<span class="drop-icon">▾</span>
<label title="toggle drop-down" class="drop-icon" for="Ideas">▾</label>
</a>
<input type="checkbox" id="Ideas">
<ul class="sub-menu">
<li><a href="#">Proyectos DIY</a></li>
<li><a href="#">Revestimientos</a></li>
<li><a href="#">Pintura</a></li>
<li><a href="#">Mudanza</a></li>
<li><a href="#">Organización</a></li>
</ul>
</li>
</ul>
<ul>
<li><a href="#">Fechas especiales
<span class="drop-icon">▾</span>
<label title="toggle drop-down" class="drop-icon" for="FechasEsp">▾</label>
</a>
<input type="checkbox" id="FechasEsp">
<ul class="sub-menu">
<li><a href="#">Navidad</a></li>
<li><a href="#">Halloween</a></li>
<li><a href="#">Bodas</a></li>
<li><a href="#">Cumpleaños</a></li>
<li><a href="#">San Valentín</a></li>
</ul>
</li>
</ul>
</ul>
</nav>
[EXTRA]: эта скрипка использует hoverIntent в качестве альтернативы jQuery hover ( ) метод, позволяющий избежать быстрого взаимодействия с событиями и не позволяющего пользователю ориентироваться на подменю.
$("body").hoverIntent(function() {
$(this).children('ul').first().slideDown("slow")},function() {
$(this).children('ul').first().slideUp("slow");
},'#menu');
$("#menu").hoverIntent(function() {
$(this).children('ul').first().slideDown("slow")},function() {
$(this).children('ul').first().slideUp("slow");
},"li:has('label.drop-icon')");