1
0
mirror of https://github.com/twbs/bootstrap.git synced 2025-08-05 05:07:35 +02:00

add tests for mouseout delay in tooltip

This commit is contained in:
Jacob Thornton
2012-04-14 23:10:03 -07:00
parent c7dc4cc573
commit b14455b03a
2 changed files with 64 additions and 22 deletions

View File

@@ -72,34 +72,26 @@
, enter: function (e) { , enter: function (e) {
var self = $(e.currentTarget)[this.type](this._options).data(this.type) var self = $(e.currentTarget)[this.type](this._options).data(this.type)
if (!self.options.delay || !self.options.delay.show) { if (!self.options.delay || !self.options.delay.show) return self.show()
self.show()
} else {
clearTimeout(this.timeout) clearTimeout(this.timeout)
self.hoverState = 'in' self.hoverState = 'in'
this.timeout = setTimeout(function() { this.timeout = setTimeout(function() {
if (self.hoverState == 'in') { if (self.hoverState == 'in') self.show()
self.show()
}
}, self.options.delay.show) }, self.options.delay.show)
} }
}
, leave: function (e) { , leave: function (e) {
var self = $(e.currentTarget)[this.type](this._options).data(this.type) var self = $(e.currentTarget)[this.type](this._options).data(this.type)
if (!self.options.delay || !self.options.delay.hide) { if (!self.options.delay || !self.options.delay.hide) return self.hide()
self.hide()
} else {
clearTimeout(this.timeout) clearTimeout(this.timeout)
self.hoverState = 'out' self.hoverState = 'out'
this.timeout = setTimeout(function() { this.timeout = setTimeout(function() {
if (self.hoverState == 'out') { if (self.hoverState == 'out') self.hide()
self.hide()
}
}, self.options.delay.hide) }, self.options.delay.hide)
} }
}
, show: function () { , show: function () {
var $tip var $tip

View File

@@ -59,6 +59,56 @@ $(function () {
ok(!$(".tooltip").length, 'tooltip removed') ok(!$(".tooltip").length, 'tooltip removed')
}) })
test("should not show tooltip if leave event occurs before delay expires", function () {
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
.appendTo('#qunit-fixture')
.tooltip({ delay: 200 })
stop()
tooltip.trigger('mouseenter')
setTimeout(function () {
ok(!$(".tooltip").hasClass('fade in'), 'tooltip is not faded in')
tooltip.trigger('mouseout')
setTimeout(function () {
ok(!$(".tooltip").hasClass('fade in'), 'tooltip is not faded in')
start()
}, 200)
}, 100)
})
test("should not show tooltip if leave event occurs before delay expires", function () {
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
.appendTo('#qunit-fixture')
.tooltip({ delay: 100 })
stop()
tooltip.trigger('mouseenter')
setTimeout(function () {
ok(!$(".tooltip").hasClass('fade in'), 'tooltip is not faded in')
tooltip.trigger('mouseout')
setTimeout(function () {
ok(!$(".tooltip").hasClass('fade in'), 'tooltip is not faded in')
start()
}, 100)
}, 50)
})
test("should show tooltip if leave event hasn't occured before delay expires", function () {
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
.appendTo('#qunit-fixture')
.tooltip({ delay: 200 })
stop()
tooltip.trigger('mouseenter')
setTimeout(function () {
ok(!$(".tooltip").hasClass('fade in'), 'tooltip is not faded in')
setTimeout(function () {
ok(!$(".tooltip").hasClass('fade in'), 'tooltip has faded in')
start()
}, 200)
}, 100)
})
test("should detect if title string is html or text: foo", function () { test("should detect if title string is html or text: foo", function () {
ok(!$.fn.tooltip.Constructor.prototype.isHTML('foo'), 'correctly detected html') ok(!$.fn.tooltip.Constructor.prototype.isHTML('foo'), 'correctly detected html')
}) })