headerComponent.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. /**
  2. *
  3. * @authors Your Name (you@example.org)
  4. * @date 2017-06-26 11:33:41
  5. * @version $Id$
  6. */
  7. var headerCompoCtrl = function () {
  8. var pageInit = function () {
  9. var isMobileMode = false;
  10. // 移动端则不需要处理
  11. if (document.documentElement.clientWidth <= 1080) {
  12. console.log('mobile mode');
  13. isMobileMode = true;
  14. isLangShow = false;
  15. langInit();
  16. mobileHeaderHandler();
  17. $('.nav-lang').on('click', function () {
  18. if (!isLangShow) {
  19. isLangShow = true;
  20. if ($('.lang-en').length) {
  21. $('.nav-lang').css('height', '3rem');
  22. } else {
  23. $('.nav-lang').css('height', '2rem');
  24. }
  25. $('.nav-lang-hidden').addClass('nav-lang-show');
  26. } else {
  27. isLangShow = false;
  28. $('.nav-lang').css('height', '1rem');
  29. $('.nav-lang-hidden').removeClass('nav-lang-show');
  30. }
  31. });
  32. return;
  33. }
  34. langInit();
  35. navRetract();
  36. };
  37. var langInit = function () {
  38. var langObj = {
  39. cn: '简体',
  40. // gb: '繁体',
  41. en: 'EN'
  42. };
  43. var currentLang = TD.util.getQuery('lang') || TD.util.getCookie('lang');
  44. // 根据当前语言设置导航栏的语言显示
  45. if (currentLang !== '') {
  46. $('.nav-lang-current').html('<div class="nav-lang-item">' + langObj[currentLang] + '</div>')
  47. $('.lang-' + currentLang).hide();
  48. } else {
  49. $('.lang-cn').hide();
  50. };
  51. if( currentLang == 'en' ){
  52. /*$('.nav-lang-current').html('<div class="nav-lang-item">' + langObj['cn'] + '</div>')
  53. $('.nav-lang-current').addClass('nav-lang-fixed-en')
  54. $('.lang-' + currentLang).hide();
  55. $('.lang-cn').hide();*/
  56. $('.nav-lang').remove();
  57. }
  58. // 事件委托
  59. $('.nav-lang-hidden').on('click', function () {
  60. var target = window.event.target || window.event.srcElement;
  61. if (target.nodeName.toLowerCase() === 'li') {
  62. // 识别选取的语言并转换成xx格式
  63. var nextLang = $(target).attr('class').match(/lang\-(cn|gb|en)/g).toString().replace('lang-', '');
  64. //TD.util.setCookie('lang',nextLang,7);
  65. if (TD.util.getQuery('lang') !== '') {
  66. location.href = location.href.replace('lang=' + currentLang, 'lang=' + nextLang);
  67. } else if (location.href.match('=')) {
  68. location.href += '&lang=' + nextLang;
  69. } else {
  70. location.href += '?lang=' + nextLang;
  71. };
  72. };
  73. });
  74. /*$('.nav-lang-fixed-en').on('click',function () {
  75. location.href = location.href.indexOf('lang=') > -1 ? location.href.replace('lang=' + currentLang, 'lang=' + 'cn') : location.href + '?lang=cn';
  76. })*/
  77. };
  78. var navRetract = function () {
  79. var isSliding = false;
  80. var timo = null;
  81. // 猫王频道不处理
  82. if ($('.subnav-thumb').length === 0) {
  83. return
  84. }
  85. setTimeout(function () {
  86. $('.subnav-main-wrap').slideUp(500, function () {
  87. $('.subnav-wrap').hover(function () {
  88. if (timo !== null) {
  89. clearTimeout(timo);
  90. }
  91. if (!isSliding) {
  92. isSliding = true;
  93. $('.subnav-main-wrap').slideDown(300, function () {
  94. isSliding = false;
  95. });
  96. };
  97. }, function () {
  98. timo = setTimeout(function () {
  99. if (!isSliding) {
  100. isSliding = true;
  101. $('.subnav-main-wrap').slideUp(300, function () {
  102. isSliding = false;
  103. });
  104. };
  105. }, 2000);
  106. })
  107. });
  108. }, 3000);
  109. };
  110. var mobileHeaderHandler = function () {
  111. var subnavReset = function () {
  112. $('.subnav-main-wrap').css('left', '0');
  113. $('.subnav-sub-wrap').css('left', '100%');
  114. $('.subnav-sub-wrap').hide();
  115. }
  116. $('.nav-menu').on('click', function () {
  117. $('.subnav-main-wrap').slideToggle();
  118. if ($('.subnav-main-wrap').css('left') !== '0') {
  119. subnavReset();
  120. }
  121. })
  122. $('.submenu').on('click', function () {
  123. $(this).find('.subnav-sub-wrap').show();
  124. $(this).find('.subnav-sub-wrap').animate({
  125. left: '0'
  126. })
  127. $('.subnav-main-wrap').animate({
  128. left: '-100%'
  129. })
  130. })
  131. $('.subnav-sub-item').on('click', function (evt) {
  132. evt.stopPropagation();
  133. $(this).find('.subnav-thr-wrap').show();
  134. $(this).find('.subnav-thr-wrap').animate({
  135. left: '0'
  136. })
  137. $('.subnav-sub-wrap').animate({
  138. left: '-100%'
  139. })
  140. })
  141. $('.subnav-sub-back').on('click', function (evt) {
  142. evt.stopPropagation();
  143. $('.subnav-main-wrap').animate({
  144. left: '0'
  145. }, 300, 'swing')
  146. $(this).parent().animate({
  147. left: '100%'
  148. }, 300, 'swing', function () {
  149. $(this).hide();
  150. })
  151. })
  152. $('.subnav-thr-back').on('click', function (evt) {
  153. evt.stopPropagation();
  154. $('.subnav-sub-wrap').animate({
  155. left: '0'
  156. }, 300, 'swing')
  157. $(this).parent().animate({
  158. left: '100%'
  159. }, 300, 'swing', function () {
  160. $(this).hide();
  161. })
  162. })
  163. }
  164. pageInit();
  165. }
  166. headerCompoCtrl();