|
1 |
| - $(function() { |
2 |
| - var $window = $(window) |
3 |
| - , $top_link = $('#toplink') |
4 |
| - , $body = $('body, html') |
5 |
| - , offset = $('#code').offset().top |
6 |
| - , hidePopover = function ($target) { |
7 |
| - $target.data('popover-hover', false); |
8 |
| - |
9 |
| - setTimeout(function () { |
10 |
| - if (!$target.data('popover-hover')) { |
11 |
| - $target.popover('hide'); |
12 |
| - } |
13 |
| - }, 300); |
14 |
| - }; |
15 |
| - |
16 |
| - $top_link.hide().click(function(event) { |
| 1 | +$(function () { |
| 2 | + var $window = $(window) |
| 3 | + , $top_link = $('#toplink') |
| 4 | + , $body = $('body, html') |
| 5 | + , offset = $('#code').offset().top; |
| 6 | + |
| 7 | + $top_link.hide().click(function (event) { |
17 | 8 | event.preventDefault();
|
18 |
| - $body.animate({scrollTop:0}, 800); |
19 |
| - }); |
| 9 | + $body.animate({scrollTop: 0}, 800); |
| 10 | + }); |
20 | 11 |
|
21 |
| - $window.scroll(function() { |
22 |
| - if($window.scrollTop() > offset) { |
23 |
| - $top_link.fadeIn(); |
| 12 | + $window.scroll(function () { |
| 13 | + if ($window.scrollTop() > offset) { |
| 14 | + $top_link.fadeIn(); |
24 | 15 | } else {
|
25 |
| - $top_link.fadeOut(); |
| 16 | + $top_link.fadeOut(); |
26 | 17 | }
|
27 |
| - }).scroll(); |
28 |
| - |
29 |
| - $('.popin') |
30 |
| - .popover({trigger: 'manual'}) |
31 |
| - .on({ |
32 |
| - 'mouseenter.popover': function () { |
33 |
| - var $target = $(this); |
34 |
| - var $container = $target.children().first(); |
35 |
| - |
36 |
| - $target.data('popover-hover', true); |
37 |
| - |
38 |
| - // popover already displayed |
39 |
| - if ($target.next('.popover').length) { |
40 |
| - return; |
41 |
| - } |
42 |
| - |
43 |
| - // show the popover |
44 |
| - $container.popover('show'); |
45 |
| - |
46 |
| - // register mouse events on the popover |
47 |
| - $target.next('.popover:not(.popover-initialized)') |
48 |
| - .on({ |
49 |
| - 'mouseenter': function () { |
50 |
| - $target.data('popover-hover', true); |
51 |
| - }, |
52 |
| - 'mouseleave': function () { |
53 |
| - hidePopover($container); |
| 18 | + }); |
| 19 | + |
| 20 | + var $popovers = $('.popin > :first-child'); |
| 21 | + $('.popin').on({ |
| 22 | + 'click.popover': function (event) { |
| 23 | + event.stopPropagation(); |
| 24 | + |
| 25 | + var $container = $(this).children().first(); |
| 26 | + |
| 27 | + //Close all other popovers: |
| 28 | + $popovers.each(function () { |
| 29 | + var $current = $(this); |
| 30 | + if (!$current.is($container)) { |
| 31 | + $current.popover('hide'); |
54 | 32 | }
|
55 |
| - }) |
56 |
| - .addClass('popover-initialized'); |
57 |
| - }, |
58 |
| - 'mouseleave.popover': function () { |
59 |
| - hidePopover($(this).children().first()); |
60 |
| - } |
61 |
| - }); |
| 33 | + }); |
| 34 | + |
| 35 | + // Toggle this popover: |
| 36 | + $container.popover('toggle'); |
| 37 | + }, |
| 38 | + }); |
| 39 | + |
| 40 | + //Hide all popovers on outside click: |
| 41 | + $(document).click(function (event) { |
| 42 | + if ($(event.target).closest($('.popover')).length === 0) { |
| 43 | + $popovers.popover('hide'); |
| 44 | + } |
| 45 | + }); |
| 46 | + |
| 47 | + //Hide all popovers on escape: |
| 48 | + $(document).keyup(function (event) { |
| 49 | + if (event.key === 'Escape') { |
| 50 | + $popovers.popover('hide'); |
| 51 | + } |
62 | 52 | });
|
| 53 | +}); |
0 commit comments