0
0
mirror of https://github.com/twbs/bootstrap.git synced 2024-11-28 10:24:19 +01:00

fixes #8399 w/ tests

This commit is contained in:
Jacob Thornton 2013-07-24 20:10:16 -07:00
parent 930c75e5dd
commit eaefed517a
5 changed files with 52 additions and 7 deletions

View File

@ -390,7 +390,7 @@
$next[0].offsetWidth // force reflow $next[0].offsetWidth // force reflow
$active.addClass(direction) $active.addClass(direction)
$next.addClass(direction) $next.addClass(direction)
this.$element.find('.item') $active
.one($.support.transition.end, function () { .one($.support.transition.end, function () {
$next.removeClass([type, direction].join(' ')).addClass('active') $next.removeClass([type, direction].join(' ')).addClass('active')
$active.removeClass(['active', direction].join(' ')) $active.removeClass(['active', direction].join(' '))
@ -1138,10 +1138,10 @@
var self = obj instanceof this.constructor ? var self = obj instanceof this.constructor ?
obj : $(obj.currentTarget)[this.type](options).data('bs.' + this.type) obj : $(obj.currentTarget)[this.type](options).data('bs.' + this.type)
if (!self.options.delay || !self.options.delay.show) return self.show()
clearTimeout(self.timeout) clearTimeout(self.timeout)
if (!self.options.delay || !self.options.delay.show) return self.show()
self.hoverState = 'in' self.hoverState = 'in'
self.timeout = setTimeout(function () { self.timeout = setTimeout(function () {
if (self.hoverState == 'in') self.show() if (self.hoverState == 'in') self.show()

File diff suppressed because one or more lines are too long

View File

@ -130,7 +130,7 @@
$next[0].offsetWidth // force reflow $next[0].offsetWidth // force reflow
$active.addClass(direction) $active.addClass(direction)
$next.addClass(direction) $next.addClass(direction)
this.$element.find('.item') $active
.one($.support.transition.end, function () { .one($.support.transition.end, function () {
$next.removeClass([type, direction].join(' ')).addClass('active') $next.removeClass([type, direction].join(' ')).addClass('active')
$active.removeClass(['active', direction].join(' ')) $active.removeClass(['active', direction].join(' '))

View File

@ -181,6 +181,51 @@ $(function () {
}, 100) }, 100)
}) })
test("should wait 200 ms before hiding the tooltip", 3, function () {
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
.appendTo('#qunit-fixture')
.tooltip({ delay: { show: 0, hide: 200} })
stop()
tooltip.trigger('mouseenter')
setTimeout(function () {
ok($(".tooltip").is('.fade.in'), 'tooltip is faded in')
tooltip.trigger('mouseout')
setTimeout(function () {
ok($(".tooltip").is('.fade.in'), '100ms:tooltip is still faded in')
setTimeout(function () {
ok(!$(".tooltip").is('.in'), 'tooltip removed')
start()
}, 150)
}, 100)
}, 1)
})
test("should not hide tooltip if leave event occurs, then tooltip is show immediately again", function () {
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
.appendTo('#qunit-fixture')
.tooltip({ delay: { show: 0, hide: 200} })
stop()
tooltip.trigger('mouseenter')
setTimeout(function () {
ok($(".tooltip").is('.fade.in'), 'tooltip is faded in')
tooltip.trigger('mouseout')
setTimeout(function () {
ok($(".tooltip").is('.fade.in'), '100ms:tooltip is still faded in')
tooltip.trigger('mouseenter')
setTimeout(function () {
ok($(".tooltip").is('.in'), 'tooltip removed')
start()
}, 150)
}, 100)
}, 1)
})
test("should not show tooltip if leave event occurs before delay expires", function () { test("should not show tooltip if leave event occurs before delay expires", function () {
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>') var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')

View File

@ -102,10 +102,10 @@
var self = obj instanceof this.constructor ? var self = obj instanceof this.constructor ?
obj : $(obj.currentTarget)[this.type](options).data('bs.' + this.type) obj : $(obj.currentTarget)[this.type](options).data('bs.' + this.type)
if (!self.options.delay || !self.options.delay.show) return self.show()
clearTimeout(self.timeout) clearTimeout(self.timeout)
if (!self.options.delay || !self.options.delay.show) return self.show()
self.hoverState = 'in' self.hoverState = 'in'
self.timeout = setTimeout(function () { self.timeout = setTimeout(function () {
if (self.hoverState == 'in') self.show() if (self.hoverState == 'in') self.show()