diff --git a/js/popover.js b/js/popover.js
index 09be24433b..479d059c58 100644
--- a/js/popover.js
+++ b/js/popover.js
@@ -85,7 +85,7 @@
var data = $this.data('bs.popover')
var options = typeof option == 'object' && option
- if (!data && option == 'destroy') return
+ if (!data && /destroy|hide/.test(option)) return
if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
if (typeof option == 'string') data[option]()
})
diff --git a/js/tests/unit/popover.js b/js/tests/unit/popover.js
index ce89c8dbd6..73a67c9840 100644
--- a/js/tests/unit/popover.js
+++ b/js/tests/unit/popover.js
@@ -247,4 +247,16 @@ $(function () {
}, new Error('`selector` option must be specified when initializing popover on the window.document object!'))
})
+ QUnit.test('should do nothing when an attempt is made to hide an uninitialized popover', function (assert) {
+ assert.expect(1)
+
+ var $popover = $('some text')
+ .appendTo('#qunit-fixture')
+ .on('hidden.bs.popover shown.bs.popover', function () {
+ assert.ok(false, 'should not fire any popover events')
+ })
+ .bootstrapPopover('hide')
+ assert.strictEqual($popover.data('bs.popover'), undefined, 'should not initialize the popover')
+ })
+
})
diff --git a/js/tests/unit/tooltip.js b/js/tests/unit/tooltip.js
index c2e2b937be..2875eff85e 100644
--- a/js/tests/unit/tooltip.js
+++ b/js/tests/unit/tooltip.js
@@ -1168,4 +1168,16 @@ $(function () {
}, new Error('`selector` option must be specified when initializing tooltip on the window.document object!'))
})
+ QUnit.test('should do nothing when an attempt is made to hide an uninitialized tooltip', function (assert) {
+ assert.expect(1)
+
+ var $tooltip = $('some text')
+ .appendTo('#qunit-fixture')
+ .on('hidden.bs.tooltip shown.bs.tooltip', function () {
+ assert.ok(false, 'should not fire any tooltip events')
+ })
+ .bootstrapTooltip('hide')
+ assert.strictEqual($tooltip.data('bs.tooltip'), undefined, 'should not initialize the tooltip')
+ })
+
})
diff --git a/js/tooltip.js b/js/tooltip.js
index 6d7f6ccbe7..624ade71c3 100644
--- a/js/tooltip.js
+++ b/js/tooltip.js
@@ -453,7 +453,7 @@
var data = $this.data('bs.tooltip')
var options = typeof option == 'object' && option
- if (!data && option == 'destroy') return
+ if (!data && /destroy|hide/.test(option)) return
if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
if (typeof option == 'string') data[option]()
})