From 6a974f9ff7962afc9aaf5510055e574d147a6c42 Mon Sep 17 00:00:00 2001 From: Jon Stevens Date: Mon, 18 Jun 2012 19:25:54 -0700 Subject: [PATCH 1/4] enable the ability to destroy tooltips and popovers from elements. related to issue #3453 --- docs/templates/pages/javascript.mustache | 8 +++++++- js/bootstrap-popover.js | 6 ++++++ js/bootstrap-tooltip.js | 6 ++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/docs/templates/pages/javascript.mustache b/docs/templates/pages/javascript.mustache index 0a3a7aa808..bad7208890 100644 --- a/docs/templates/pages/javascript.mustache +++ b/docs/templates/pages/javascript.mustache @@ -755,6 +755,9 @@ $('a[data-toggle="tab"]').on('shown', function (e) {

.tooltip('toggle')

{{_i}}Toggles an element's tooltip.{{/i}}

$('#element').tooltip('toggle')
+

.tooltip('destroy')

+

{{_i}}Destroys an element's tooltip.{{/i}}

+
$('#element').tooltip('destroy')
@@ -821,7 +824,7 @@ $('a[data-toggle="tab"]').on('shown', function (e) { {{_i}}trigger{{/i}} {{_i}}string{{/i}} 'hover' - {{_i}}how tooltip is triggered{{/i}} - hover | focus | manual + {{_i}}how popover is triggered{{/i}} - hover | focus | manual {{_i}}title{{/i}} @@ -867,6 +870,9 @@ $('a[data-toggle="tab"]').on('shown', function (e) {

.popover('toggle')

{{_i}}Toggles an elements popover.{{/i}}

$('#element').popover('toggle')
+

.popover('popover')

+

{{_i}}Destroys an element's popover.{{/i}}

+
$('#element').popover('destroy')
diff --git a/js/bootstrap-popover.js b/js/bootstrap-popover.js index c6c1f8b473..456b74bdd4 100644 --- a/js/bootstrap-popover.js +++ b/js/bootstrap-popover.js @@ -71,6 +71,12 @@ return this.$tip } + , destroy: function () { + var $e = this.$element + $e.off() + $e.removeData('popover') + } + }) diff --git a/js/bootstrap-tooltip.js b/js/bootstrap-tooltip.js index f5f9fad3f4..93525b8bd3 100644 --- a/js/bootstrap-tooltip.js +++ b/js/bootstrap-tooltip.js @@ -235,6 +235,12 @@ this[this.tip().hasClass('in') ? 'hide' : 'show']() } + , destroy: function () { + var $e = this.$element + $e.off() + $e.removeData('tooltip') + } + } From 47e06470866b95cc9c5a2885754a169afd74de39 Mon Sep 17 00:00:00 2001 From: Jon Stevens Date: Mon, 18 Jun 2012 19:51:49 -0700 Subject: [PATCH 2/4] add unit tests for destroy behavior of popover and tooltip --- js/tests/unit/bootstrap-popover.js | 10 ++++++++++ js/tests/unit/bootstrap-tooltip.js | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/js/tests/unit/bootstrap-popover.js b/js/tests/unit/bootstrap-popover.js index afd6b170b4..6d5d9f7a18 100644 --- a/js/tests/unit/bootstrap-popover.js +++ b/js/tests/unit/bootstrap-popover.js @@ -90,4 +90,14 @@ $(function () { ok(!$('.popover').length, 'popover was removed') $('#qunit-fixture').empty() }) + + test("should destroy popover", function () { + var popover = $('
').popover() + ok(popover.data('popover'), 'popover has data') + ok(popover.data('events').mouseover && popover.data('events').mouseout, 'popover has hover event') + popover.popover('destroy') + ok(!popover.data('popover'), 'popover does not have data') + ok(!popover.data('events'), 'popover does not have any events') + }) + }) \ No newline at end of file diff --git a/js/tests/unit/bootstrap-tooltip.js b/js/tests/unit/bootstrap-tooltip.js index 51e03486e6..7852305c1e 100644 --- a/js/tests/unit/bootstrap-tooltip.js +++ b/js/tests/unit/bootstrap-tooltip.js @@ -128,4 +128,13 @@ $(function () { }, 200) }) + test("should destroy tooltip", function () { + var tooltip = $('
').tooltip() + ok(tooltip.data('tooltip'), 'tooltip has data') + ok(tooltip.data('events').mouseover && tooltip.data('events').mouseout, 'tooltip has hover event') + tooltip.tooltip('destroy') + ok(!tooltip.data('tooltip'), 'tooltip does not have data') + ok(!tooltip.data('events'), 'tooltip does not have any events') + }) + }) From af88f54e5d70c8a9e342f14f937aa5985b4b9d68 Mon Sep 17 00:00:00 2001 From: Jon Stevens Date: Mon, 18 Jun 2012 19:56:52 -0700 Subject: [PATCH 3/4] small typo fix to docs --- docs/templates/pages/javascript.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/templates/pages/javascript.mustache b/docs/templates/pages/javascript.mustache index bad7208890..3e558c4f75 100644 --- a/docs/templates/pages/javascript.mustache +++ b/docs/templates/pages/javascript.mustache @@ -870,7 +870,7 @@ $('a[data-toggle="tab"]').on('shown', function (e) {

.popover('toggle')

{{_i}}Toggles an elements popover.{{/i}}

$('#element').popover('toggle')
-

.popover('popover')

+

.popover('destroy')

{{_i}}Destroys an element's popover.{{/i}}

$('#element').popover('destroy')
From 3a5b4cc7df5f63b39218fbae75d6604e08f89e2a Mon Sep 17 00:00:00 2001 From: Jon Stevens Date: Wed, 20 Jun 2012 10:42:25 -0700 Subject: [PATCH 4/4] simplify code into a single line --- js/bootstrap-popover.js | 4 +--- js/bootstrap-tooltip.js | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/js/bootstrap-popover.js b/js/bootstrap-popover.js index 456b74bdd4..fe22ecb47c 100644 --- a/js/bootstrap-popover.js +++ b/js/bootstrap-popover.js @@ -72,9 +72,7 @@ } , destroy: function () { - var $e = this.$element - $e.off() - $e.removeData('popover') + this.$element.off().removeData('popover') } }) diff --git a/js/bootstrap-tooltip.js b/js/bootstrap-tooltip.js index 93525b8bd3..f280e36966 100644 --- a/js/bootstrap-tooltip.js +++ b/js/bootstrap-tooltip.js @@ -236,9 +236,7 @@ } , destroy: function () { - var $e = this.$element - $e.off() - $e.removeData('tooltip') + this.$element.off().removeData('tooltip') } }