diff --git a/term_reference_tree.js b/term_reference_tree.js
index 61e5ed9..819bb55 100644
--- a/term_reference_tree.js
+++ b/term_reference_tree.js
@@ -131,6 +131,26 @@ Drupal.behaviors.termReferenceTree = {
         //End process checkbox changes.
       } //End Want a cascading checking.
 
+      // Expand all checked parents with children on page load
+      $(this).find('.term-reference-tree-button').each(function() {
+        var is_visible = $(this).siblings('ul').filter(':visible').length;
+        if (!is_visible && $(this).siblings('.form-type-checkbox').children('input').filter(':checked').length) {
+          $(this).click();
+        }
+      });
+
+      // Expand child menu when a parent is clicked
+      $(this).find('.form-checkbox').change(function(event) {
+        var event_target = $(event.target);
+        var control_id = event_target.attr('id');
+        var children = event_target.parent().next().children().children('div.form-type-checkbox').children('input');
+        var is_visible = $(this).parent().siblings('ul').filter(':visible').length;
+        if ($(children).length) {
+          if (($(this).attr('checked') && !is_visible) || (!$(this).attr('checked') && is_visible)) {
+            $(this).parent().siblings('.term-reference-tree-button').click();
+          }
+        }
+      });
     });
   }
 };
