diff options
| author | Mark Otto <[email protected]> | 2013-11-30 00:26:53 -0800 |
|---|---|---|
| committer | Mark Otto <[email protected]> | 2013-11-30 00:26:53 -0800 |
| commit | bb4a39d51cd644b212323a7e36f0b5af2682d0ca (patch) | |
| tree | 60ae6687f516cea501f32f5623a5c0aacb950772 /js | |
| parent | 96109d3138fd6f5b67fb1108754e81c077630b36 (diff) | |
| parent | e6eb798178529cf58fab3f33446c0170bae7bdea (diff) | |
| download | bootstrap-bb4a39d51cd644b212323a7e36f0b5af2682d0ca.tar.xz bootstrap-bb4a39d51cd644b212323a7e36f0b5af2682d0ca.zip | |
Merge branch 'master' into pr/11388
Conflicts:
dist/css/bootstrap.min.css
Diffstat (limited to 'js')
| -rw-r--r-- | js/button.js | 14 | ||||
| -rw-r--r-- | js/carousel.js | 8 | ||||
| -rw-r--r-- | js/dropdown.js | 6 | ||||
| -rw-r--r-- | js/scrollspy.js | 2 | ||||
| -rw-r--r-- | js/tests/unit/button.js | 6 |
5 files changed, 24 insertions, 12 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/dropdown.js b/js/dropdown.js index d5da638de..147fcd7b0 100644 --- a/js/dropdown.js +++ b/js/dropdown.js @@ -41,7 +41,7 @@ if (!isActive) { if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { - // if mobile we we use a backdrop because click events don't delegate + // if mobile we use a backdrop because click events don't delegate $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus) } @@ -123,9 +123,9 @@ $.fn.dropdown = function (option) { return this.each(function () { var $this = $(this) - var data = $this.data('dropdown') + var data = $this.data('bs.dropdown') - if (!data) $this.data('dropdown', (data = new Dropdown(this))) + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) if (typeof option == 'string') data[option].call($this) }) } 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') }) }) |
