diff --git includes/menu.inc includes/menu.inc
index 2951129..69524b7 100644
--- includes/menu.inc
+++ includes/menu.inc
@@ -893,16 +893,6 @@ function menu_tree_output($tree) {
     if ($i == $num_items - 1) {
       $class[] = 'last';
     }
-    // Set a class if the link has children.
-    if ($data['below']) {
-      $class[] = 'expanded';
-    }
-    elseif ($data['link']['has_children']) {
-      $class[] = 'collapsed';
-    }
-    else {
-      $class[] = 'leaf';
-    }
     // Set a class if the link is in the active trail.
     if ($data['link']['in_active_trail']) {
       $class[] = 'active-trail';
@@ -910,11 +900,21 @@ function menu_tree_output($tree) {
     }
 
     $element['#theme'] = 'menu_link';
-    $element['#attributes']['class'] = $class;
     $element['#title'] = $data['link']['title'];
     $element['#href'] = $data['link']['href'];
     $element['#localized_options'] = !empty($data['localized_options']) ? $data['localized_options'] : array();
     $element['#below'] = $data['below'] ? menu_tree_output($data['below']) : $data['below'];
+    // Set a class if the link has visible children.
+    if ($element['#below']) {
+      $class[] = 'expanded';
+    }
+    elseif ($data['link']['has_children']) {
+      $class[] = 'collapsed';
+    }
+    else {
+      $class[] = 'leaf';
+    }
+    $element['#attributes']['class'] = $class;
     $element['#original_link'] = $data['link'];
     // Index using the link's unique mlid.
     $build[$data['link']['mlid']] = $element;
