diff --git a/menu_generator/menu.py b/menu_generator/menu.py
index c90663be7efc8a4a599d44f24b1f59e27123e0a1..38111bdb4838c17bb0c50723ebe003c3839b7c8b 100755
--- a/menu_generator/menu.py
+++ b/menu_generator/menu.py
@@ -82,10 +82,20 @@ class MenuBase(object):
 
     def _is_selected(self, item_dict):
         """
-        Given a menu item dictionary, it returns true if `url` is on path.
+        Given a menu item dictionary, it returns true if `url` is on path,
+        unless the item is marked as a root, in which case returns true if `url` is part of path.
         """
         url = self._get_url(item_dict)
-        return url == self.path
+        if self._is_root(item_dict):
+            return url in self.path
+        else:
+            return url == self.path
+
+    def _is_root(self, item_dict):
+        """
+        Given a menu item dictionary, it returns true if item is marked as a `root`.
+        """
+        return item_dict.get('root', False)
 
     def _process_breadcrums(self, menu_list):
         """