How do you only show children of "active" parent in a Structure section's nav?
A recursive macro will help you get around the limitations of ifchildren (which P&amp;T will hopefully resolve soon), as follows:

{% set mainEntry = craft.entries.slug(craft.request.getSegment(1)).first() %}
{% set subnav = craft.entries.descendantOf(mainEntry).level(2) %}

{% macro recursiveChildren(page) %}
  {% if page.hasDescendants and page.slug == craft.request.getSegment(page.level) %}
    &lt;ul&gt;
      {% for subpage in page.children %}
          &lt;li{% if subpage.slug == craft.request.getSegment(subpage.level) %} class="active"{% endif %}&gt;
            {{ subpage.link }}
            {{ _self.recursiveChildren(subpage) }}
          &lt;/li&gt;
      {% endfor %}
    &lt;/ul&gt;
  {% endif %}
{% endmacro %}

&lt;ul&gt;
{% for page in subnav %}
  &lt;li{% if page.slug == craft.request.getSegment(page.level) %} class="active"{% endif %}&gt;
    {{ page.link }}
    {{ _self.recursiveChildren(page) }}
  &lt;/li&gt;
{% endfor %}
&lt;/ul&gt;


More on macros here.