diff --git a/js/angular/components/common/common.js b/js/angular/components/common/common.js
index <HASH>..<HASH> 100644
--- a/js/angular/components/common/common.js
+++ b/js/angular/components/common/common.js
@@ -201,9 +201,21 @@
       element.on('click', function(e) {
         var tar = e.target, avoid, activeElements, closedElements, i;
 
-        // check if clicked target is designated to open/close another component
+        // check if clicked target or any of its ancestors is designated to open/close
+        // another component
         avoid = ['ba-toggle', 'ba-hard-toggle', 'ba-open', 'ba-close'].filter(function(e){
-          return tar.closest('*[' + e + ']') !== null;
+          var parentElement = tar, hasAttr = false;
+
+          while (parentElement && typeof(parentElement.getAttribute) === 'function') {
+            var attrVal = parentElement.getAttribute(e);
+            if (typeof(attrVal) !== 'undefined' && attrVal !== null) {
+              hasAttr = true;
+              break;
+            }
+            parentElement = parentElement.parentNode;
+          }
+
+          return hasAttr;
         });
         if(avoid.length > 0) {
           // do nothing
jqlite-friendly fix for issue #<I>

Fix issue where nested elements within a ba-open (etc) element would
not open the thing that was supposed to be opened.