Buttons spinner for Twitter Bootstrap 3.0

Converted existing solution for bootstrap 2.0 http://jsfiddle.net/AndrewDryga/GY6LC/

by Oleksandr Shybystyi

HTML

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
A and Button tags:
<p>
  <a class="btn btn-success has-spinner">
    <i class="fa fa-spinner fa-spin"></i>
    Foo
  </a>
</p>
<p>
  <button class="btn btn-success has-spinner">
    <i class="fa fa-spinner fa-spin"></i>
    Foo
  </button>
</p>

Diffrent sizes:
<p>
  <a class="btn btn-xs btn-success has-spinner">
    <i class="fa fa-spinner fa-spin"></i>
    Foo
  </a>
</p>
<p>
  <a class="btn btn-sm btn-success has-spinner">
    <i class="fa fa-spinner fa-spin"></i>
    Foo
  </a>
</p>
<p>
  <a class="btn btn-success has-spinner">
    <i class="fa fa-spinner fa-spin"></i>
    Foo
  </a>
</p>
<p>
  <a class="btn btn-lg btn-success has-spinner">
    <i class="fa fa-spinner fa-spin"></i>
    Foo
  </a>
</p>

Left and right positions:
<p>
  <a class="btn btn-success has-spinner">
    <i class="fa fa-spinner fa-spin"></i>
    Foo
  </a>
</p>
<p>
  <a class="btn btn-success has-spinner">
    Foo
    <i class="fa fa-spinner fa-spin"></i>
  </a>
</p>

Left and right positions in fixed width .btn:
<p>
  <a class="btn btn-success has-spinner" style="width:75px">
    <i class="fa fa-spinner fa-spin"></i>
    Foo
  </a>
</p>
<p>
  <a class="btn btn-success has-spinner" style="width:75px">
    Foo
    <i class="fa fa-spinner fa-spin"></i>
  </a>
</p>

CSS

.has-spinner .fa-spinner {
  opacity: 0;
  max-width: 0;

  -webkit-transition: opacity 0.25s, max-width 0.45s; 
  -moz-transition: opacity 0.25s, max-width 0.45s;
  -o-transition: opacity 0.25s, max-width 0.45s;
  transition: opacity 0.25s, max-width 0.45s; /* Duration fixed since we animate additional hidden width */
}

.has-spinner.active {
  cursor:progress;
}

.has-spinner.active .fa-spinner {
  opacity: 1;
  max-width: 50px; /* More than it will ever come, notice that this affects on animation duration */
}

JavaScript

$(function(){
    $('a.has-spinner, button.has-spinner').click(function() {
        $(this).toggleClass('active');
    });
});