diff options
| author | Mark Otto <[email protected]> | 2013-11-16 22:02:59 -0800 |
|---|---|---|
| committer | Mark Otto <[email protected]> | 2013-11-16 22:02:59 -0800 |
| commit | 03501f9c4afc3a74bba958c388b32e5ac065e997 (patch) | |
| tree | 2590291a248334d167245b6c95b36ea7a7b9ae64 /js | |
| parent | 86678e66021657cf7d59a96b9cf0fe0cb42ee968 (diff) | |
| parent | ae4d5f21a96fab3691ca33e9e3747a01c467e10e (diff) | |
| download | bootstrap-03501f9c4afc3a74bba958c388b32e5ac065e997.tar.xz bootstrap-03501f9c4afc3a74bba958c388b32e5ac065e997.zip | |
Merge branch 'master' into docs_derp
Diffstat (limited to 'js')
| -rw-r--r-- | js/button.js | 14 | ||||
| -rw-r--r-- | js/carousel.js | 8 | ||||
| -rw-r--r-- | js/scrollspy.js | 2 | ||||
| -rw-r--r-- | js/tests/unit/button.js | 6 |
4 files changed, 21 insertions, 9 deletions
diff --git a/js/button.js b/js/button.js index 0145689dd..3c1613506 100644 --- a/js/button.js +++ b/js/button.js @@ -54,15 +54,21 @@ Button.prototype.toggle = function () { var $parent = this.$element.closest('[data-toggle="buttons"]') + var changed = true if ($parent.length) { var $input = this.$element.find('input') - .prop('checked', !this.$element.hasClass('active')) - .trigger('change') - if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active') + if ($input.prop('type') === 'radio') { + // see if clicking on current one + if ($input.prop('checked') && this.$element.hasClass('active')) + changed = false + else + $parent.find('.active').removeClass('active') + } + if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') } - this.$element.toggleClass('active') + if (changed) this.$element.toggleClass('active') } diff --git a/js/carousel.js b/js/carousel.js index 902d4d781..a31bb071f 100644 --- a/js/carousel.js +++ b/js/carousel.js @@ -69,7 +69,7 @@ if (pos > (this.$items.length - 1) || pos < 0) return - if (this.sliding) return this.$element.one('slid', function () { that.to(pos) }) + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) if (activeIndex == pos) return this.pause().cycle() return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) @@ -121,7 +121,7 @@ if (this.$indicators.length) { this.$indicators.find('.active').removeClass('active') - this.$element.one('slid', function () { + this.$element.one('slid.bs.carousel', function () { var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) $nextIndicator && $nextIndicator.addClass('active') }) @@ -139,7 +139,7 @@ $next.removeClass([type, direction].join(' ')).addClass('active') $active.removeClass(['active', direction].join(' ')) that.sliding = false - setTimeout(function () { that.$element.trigger('slid') }, 0) + setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0) }) .emulateTransitionEnd(600) } else { @@ -148,7 +148,7 @@ $active.removeClass('active') $next.addClass('active') this.sliding = false - this.$element.trigger('slid') + this.$element.trigger('slid.bs.carousel') } isCycling && this.cycle() diff --git a/js/scrollspy.js b/js/scrollspy.js index 1d2fc7859..b11ecdf29 100644 --- a/js/scrollspy.js +++ b/js/scrollspy.js @@ -113,7 +113,7 @@ .addClass('active') } - active.trigger('activate') + active.trigger('activate.bs.scrollspy') } diff --git a/js/tests/unit/button.js b/js/tests/unit/button.js index 16284e0ce..115edefaf 100644 --- a/js/tests/unit/button.js +++ b/js/tests/unit/button.js @@ -111,6 +111,12 @@ $(function () { ok(!btn1.find('input').prop('checked'), 'btn1 is checked') ok(btn2.hasClass('active'), 'btn2 has active class') ok(btn2.find('input').prop('checked'), 'btn2 is checked') + + btn2.find('input').click() /* clicking an already checked radio should not un-check it */ + ok(!btn1.hasClass('active'), 'btn1 does not have active class') + ok(!btn1.find('input').prop('checked'), 'btn1 is checked') + ok(btn2.hasClass('active'), 'btn2 has active class') + ok(btn2.find('input').prop('checked'), 'btn2 is checked') }) }) |
