file.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. setTimeout(function () {
  9. if (!$target.data('popover-hover')) {
  10. $target.popover('hide');
  11. }
  12. }, 300);
  13. };
  14. $top_link.hide().click(function(event) {
  15. event.preventDefault();
  16. $body.animate({scrollTop:0}, 800);
  17. });
  18. $window.scroll(function() {
  19. if($window.scrollTop() > offset) {
  20. $top_link.fadeIn();
  21. } else {
  22. $top_link.fadeOut();
  23. }
  24. }).scroll();
  25. $('.popin')
  26. .popover({trigger: 'manual'})
  27. .on({
  28. 'mouseenter.popover': function () {
  29. var $target = $(this);
  30. $target.data('popover-hover', true);
  31. // popover already displayed
  32. if ($target.next('.popover').length) {
  33. return;
  34. }
  35. // show the popover
  36. $target.popover('show');
  37. // register mouse events on the popover
  38. $target.next('.popover:not(.popover-initialized)')
  39. .on({
  40. 'mouseenter': function () {
  41. $target.data('popover-hover', true);
  42. },
  43. 'mouseleave': function () {
  44. hidePopover($target);
  45. }
  46. })
  47. .addClass('popover-initialized');
  48. },
  49. 'mouseleave.popover': function () {
  50. hidePopover($(this));
  51. }
  52. });
  53. });