Просто избавьтесь от лишнего тега div
. Ваш next()
выбирает, что вместо ul.menu вы пытаетесь нацелиться. Вот так:
<aside class="widget">
<h2 class="trigger">Portfolio</h2>
<ul class="menu">
<li>Test</li>
</ul>
</aside>
<aside class="widget">
<h2 class="trigger">Portfolio</h2>
<ul class="menu">
<li>Test</li>
</ul>
</aside>
<aside class="widget">
<h2 class="trigger">Portfolio</h2>
<ul class="menu">
<li>Test</li>
</ul>
</aside>
Вам также необходимо изменить следующую строку
$('div ul.menu').hide();
чтобы пропустить div
$('ul.menu').hide();
Примечание: причина, по которой это работает с .show (), заключается в том, что ваш div показывается по умолчанию, поэтому тот факт, что .show () вызывается не для того элемента, остается незамеченным.