From 68b771a057b60ca5740cf9a1b0f8f9ec73e5dc56 Mon Sep 17 00:00:00 2001 From: Ben-Russell Date: Tue, 26 Aug 2014 14:34:21 -0700 Subject: [PATCH] Independently delegate data-api selectors Fixes #14462. Closes #14463 by merging it. --- js/carousel.js | 8 ++++++-- js/dropdown.js | 4 +++- js/tab.js | 8 ++++++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/js/carousel.js b/js/carousel.js index b688990095..8884424efd 100644 --- a/js/carousel.js +++ b/js/carousel.js @@ -207,7 +207,7 @@ // CAROUSEL DATA-API // ================= - $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var clickHandler = function (e) { var href var $this = $(this) var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 @@ -223,7 +223,11 @@ } e.preventDefault() - }) + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) $(window).on('load', function () { $('[data-ride="carousel"]').each(function () { diff --git a/js/dropdown.js b/js/dropdown.js index 7388f81246..fd7f658f72 100644 --- a/js/dropdown.js +++ b/js/dropdown.js @@ -154,6 +154,8 @@ .on('click.bs.dropdown.data-api', clearMenus) .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) - .on('keydown.bs.dropdown.data-api', toggle + ', [role="menu"], [role="listbox"]', Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown) }(jQuery); diff --git a/js/tab.js b/js/tab.js index dd307a424a..5c09da49be 100644 --- a/js/tab.js +++ b/js/tab.js @@ -141,9 +141,13 @@ // TAB DATA-API // ============ - $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { + var clickHandler = function (e) { e.preventDefault() Plugin.call($(this), 'show') - }) + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) }(jQuery);