From 7f122be0041ff2d4314a196d53d32dc5f295ed02 Mon Sep 17 00:00:00 2001 From: fat Date: Tue, 10 Jun 2014 19:56:08 -0700 Subject: [PATCH] add special transitionend type to test event origin fixes #13430 --- js/alert.js | 2 +- js/carousel.js | 2 +- js/collapse.js | 19 ++++--------------- js/modal.js | 8 ++++---- js/tab.js | 2 +- js/tooltip.js | 4 ++-- js/transition.js | 12 +++++++++++- 7 files changed, 24 insertions(+), 25 deletions(-) diff --git a/js/alert.js b/js/alert.js index f7fc6fb8e2..609127a2c7 100644 --- a/js/alert.js +++ b/js/alert.js @@ -54,7 +54,7 @@ $.support.transition && $parent.hasClass('fade') ? $parent - .one($.support.transition.end, removeElement) + .one('bsTransitionEnd', removeElement) .emulateTransitionEnd(150) : removeElement() } diff --git a/js/carousel.js b/js/carousel.js index af51cf50d5..dcaccf8d7f 100644 --- a/js/carousel.js +++ b/js/carousel.js @@ -132,7 +132,7 @@ $active.addClass(direction) $next.addClass(direction) $active - .one($.support.transition.end, function () { + .one('bsTransitionEnd', function () { $next.removeClass([type, direction].join(' ')).addClass('active') $active.removeClass(['active', direction].join(' ')) that.sliding = false diff --git a/js/collapse.js b/js/collapse.js index d5d74d07b9..add4aea921 100644 --- a/js/collapse.js +++ b/js/collapse.js @@ -61,18 +61,12 @@ this.transitioning = 1 - var complete = function (e) { - if (e && e.target != this.$element[0]) { - this.$element - .one($.support.transition.end, $.proxy(complete, this)) - return - } + var complete = function () { this.$element .removeClass('collapsing') .addClass('collapse in')[dimension]('') this.transitioning = 0 this.$element - .off($.support.transition.end + '.bs.collapse') .trigger('shown.bs.collapse') } @@ -81,7 +75,7 @@ var scrollSize = $.camelCase(['scroll', dimension].join('-')) this.$element - .on($.support.transition.end + '.bs.collapse', $.proxy(complete, this)) + .one('bsTransitionEnd', $.proxy(complete, this)) .emulateTransitionEnd(350)[dimension](this.$element[0][scrollSize]) } @@ -103,12 +97,7 @@ this.transitioning = 1 - var complete = function (e) { - if (e && e.target != this.$element[0]) { - this.$element - .one($.support.transition.end, $.proxy(complete, this)) - return - } + var complete = function () { this.transitioning = 0 this.$element .trigger('hidden.bs.collapse') @@ -120,7 +109,7 @@ this.$element [dimension](0) - .one($.support.transition.end, $.proxy(complete, this)) + .one('bsTransitionEnd', $.proxy(complete, this)) .emulateTransitionEnd(350) } diff --git a/js/modal.js b/js/modal.js index 2c363ec331..6b9b63f546 100644 --- a/js/modal.js +++ b/js/modal.js @@ -89,7 +89,7 @@ transition ? that.$element.find('.modal-dialog') // wait for modal to slide in - .one($.support.transition.end, function () { + .one('bsTransitionEnd', function () { that.$element.trigger('focus').trigger(e) }) .emulateTransitionEnd(300) : @@ -122,7 +122,7 @@ $.support.transition && this.$element.hasClass('fade') ? this.$element - .one($.support.transition.end, $.proxy(this.hideModal, this)) + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) .emulateTransitionEnd(300) : this.hideModal() } @@ -185,7 +185,7 @@ doAnimate ? this.$backdrop - .one($.support.transition.end, callback) + .one('bsTransitionEnd', callback) .emulateTransitionEnd(150) : callback() @@ -198,7 +198,7 @@ } $.support.transition && this.$element.hasClass('fade') ? this.$backdrop - .one($.support.transition.end, callbackRemove) + .one('bsTransitionEnd', callbackRemove) .emulateTransitionEnd(150) : callbackRemove() diff --git a/js/tab.js b/js/tab.js index 57ae6bc9f2..3eec7c2df8 100644 --- a/js/tab.js +++ b/js/tab.js @@ -85,7 +85,7 @@ transition ? $active - .one($.support.transition.end, next) + .one('bsTransitionEnd', next) .emulateTransitionEnd(150) : next() diff --git a/js/tooltip.js b/js/tooltip.js index 692651457f..b04dccd919 100644 --- a/js/tooltip.js +++ b/js/tooltip.js @@ -210,7 +210,7 @@ $.support.transition && this.$tip.hasClass('fade') ? $tip - .one($.support.transition.end, complete) + .one('bsTransitionEnd', complete) .emulateTransitionEnd(150) : complete() } @@ -298,7 +298,7 @@ $.support.transition && this.$tip.hasClass('fade') ? $tip - .one($.support.transition.end, complete) + .one('bsTransitionEnd', complete) .emulateTransitionEnd(150) : complete() diff --git a/js/transition.js b/js/transition.js index 8fcf8ff4bd..efc66bae99 100644 --- a/js/transition.js +++ b/js/transition.js @@ -40,7 +40,7 @@ $.fn.emulateTransitionEnd = function (duration) { var called = false var $el = this - $(this).one($.support.transition.end, function () { called = true }) + $(this).one('bsTransitionEnd', function () { called = true }) var callback = function () { if (!called) $($el).trigger($.support.transition.end) } setTimeout(callback, duration) return this @@ -48,6 +48,16 @@ $(function () { $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } }) });