Making Bootstrap Dropdowns More Accessible

HTML

<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<!-- Single button -->
<div class="btn-group">
  <a href="http://www.google.it">
    Action <span class="caret"></span>
  </a>
  <ul class="dropdown-menu" role="menu" aria-expanded="false">
    <li><a href="#">Action</a></li>
    <li><a href="#">Another action</a></li>
    <li><a href="#">Something else here</a></li>
    <li class="divider"></li>
    <li><a href="#">Separated link</a></li>
  </ul>
</div>

<!-- Split button -->
<div class="btn-group">
  <button type="button" class="btn btn-default">Action</button>
  <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true">
    <span class="caret"></span>
    <span class="sr-only">Toggle Dropdown</span>
  </button>
  <ul class="dropdown-menu" role="menu" aria-expanded="false">
    <li><a href="#">Action</a></li>
    <li><a href="#">Another action</a></li>
    <li><a href="#">Something else here</a></li>
    <li class="divider"></li>
    <li><a href="#">Separated link</a></li>
  </ul>
</div>

JavaScript

// On dropdown open
$(document).on('shown.bs.dropdown', function(event) {
    var dropdown = $(event.target);
    
    // Set aria-expanded to true
    dropdown.find('.dropdown-menu').attr('aria-expanded', true);
    
    // Set focus on the first link in the dropdown
    setTimeout(function() {
        dropdown.find('.dropdown-menu li:first-child a').focus();
    }, 10);
});

// On dropdown close
$(document).on('hidden.bs.dropdown', function(event) {
    var dropdown = $(event.target);
    
    // Set aria-expanded to false        
    dropdown.find('.dropdown-menu').attr('aria-expanded', false);
    
    // Set focus back to dropdown toggle
    dropdown.find('.dropdown-toggle').focus();
});