diff --git a/js/bootstrap-tab.js b/js/bootstrap-tab.js
index dfcc8441256483f7f10ce45668ca3f1487af607d..ef0b175979634bef1577fba85feff954b6821c37 100644
--- a/js/bootstrap-tab.js
+++ b/js/bootstrap-tab.js
@@ -49,7 +49,7 @@
 
       if ( $this.parent('li').hasClass('active') ) return
 
-      previous = $ul.find('.active a').last()[0]
+      previous = $ul.find('.active :first-child').last()[0]
 
       e = $.Event('show', {
         relatedTarget: previous
diff --git a/js/tests/unit/bootstrap-tab.js b/js/tests/unit/bootstrap-tab.js
index 9878047810dd0be1a8595e112d3aa20a8b0895cc..d6887d6d499df87c10e67bc229f5423305f8ed6c 100644
--- a/js/tests/unit/bootstrap-tab.js
+++ b/js/tests/unit/bootstrap-tab.js
@@ -58,4 +58,26 @@ $(function () {
           .tab('show')
       })
 
+      test("should set relatedTarget for any target element", function () {
+
+        stop();
+
+        var pillsHTML =
+            '<ul class="pills">'
+          + '<li class="active"><span href="#home">Home</span></li>'
+          + '<li><span href="#profile">Profile</span></li>'
+          + '</ul>'
+
+        var pills = $(pillsHTML).appendTo($('#qunit-fixture'))
+        var tabContent = $('<ul><li class="in active" id="home"></li><li id="profile"></li></ul>').appendTo($('#qunit-fixture'))
+
+        pills.find('li:last span')
+          .on('show', function (e) {
+            equals(e.target, pills.find('li:last span')[0])
+            equals(e.relatedTarget, pills.find('li:first span')[0])
+            start()
+          })
+          .tab('show')
+
+      })
 })
\ No newline at end of file