Angular: Empty Fiddle
http://angularjs.org/
HTML
<script src="http://code.angularjs.org/angular-1.0.1.js"></script>
<div ng-controller="MyCtrl">
<!-- Menu 1 -->
<div class="select-box left">
<div class="select-box-field" ng-click="dropdown = !dropdown;" click-outside="dropdown">
<span>Menu 1</span>
</div>
<div class="select-box-field-dropdown" ng-class="{ 'is-active':dropdown }">
<span>Dropdown menu Item 1</span>
<span>Dropdown menu Item 2</span>
</div>
</div>
<!-- Menu 2 -->
<div class="select-box right">
<div class="select-box-field" ng-click="menu2 = !menu2;">
<span>Menu 2</span>
</div>
<div class="select-box-field-dropdown" ng-class="{ 'is-active':menu2 }">
<span>Dropdown menu Item 1</span>
<span>Dropdown menu Item 2</span>
</div>
</div>
</div>
CSS
.select-box {
position: relative;
font-family: Helvetica, Arial, sans-serif;
}
.left {
float: left;
}
.right {
float:right;
}
.select-box-field {
width: 200px;
height: 20px;
line-height: 20px;
background: #f6f6f6;
font-size: 16px;
padding: .5rem;
border: 1px solid rgba(44, 62, 80, 0.25);
cursor: pointer;
}
.select-box-field:hover {
background: #f0f0f0;
}
.select-box-field-dropdown {
display: none;
position: absolute;
left: 0;
top: 100%;
background: white;
box-shadow: 0 2px 4px rgba(44, 62, 80, 0.25);
padding: 1rem;
z-index: 10;
}
.select-box-field-dropdown.is-active {
display: block;
}
JavaScript
var myApp = angular.module('myApp',[]);
function MyCtrl() {
}
myApp.directive('clickOutside', function() {
return function(scope, elem) {
var x = document.getElementsByTagName("BODY")[0];
x.addEventListener('click', function() {
dropdown = false;
scope.$apply();
});
elem.addEventListener('click', function(e) {
e.stopPropagation();
});
}
});