aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorMark Otto <[email protected]>2013-11-30 00:26:53 -0800
committerMark Otto <[email protected]>2013-11-30 00:26:53 -0800
commitbb4a39d51cd644b212323a7e36f0b5af2682d0ca (patch)
tree60ae6687f516cea501f32f5623a5c0aacb950772 /js
parent96109d3138fd6f5b67fb1108754e81c077630b36 (diff)
parente6eb798178529cf58fab3f33446c0170bae7bdea (diff)
downloadbootstrap-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.js14
-rw-r--r--js/carousel.js8
-rw-r--r--js/dropdown.js6
-rw-r--r--js/scrollspy.js2
-rw-r--r--js/tests/unit/button.js6
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')
})
})