1(function (document, $) { 2 'use strict'; 3 4 const $scrollElement = $(document.scrollingElement || 'html'); 5 6 // ---------------------------------------------------------------------------------- 7 // DispSwitchBtn 8 // ãã¿ã³ï¼liã®ãªãã®aãªã³ã¯ï¼ã§è¡¨ç¤ºãåãæ¿ãã 9 // 10 // ï¼æ©è½æ¦è¦ï¼ 11 // - 鏿ãããã¿ã³ï¼liã®ãªãã®aãªã³ã¯ï¼ãæå®ããidãæã¤è¦ç´ ã表示ãããä»ã®ãã¿ã³ãæå®ããidãæã¤è¦ç´ ã¯é表示ã«ããã 12 // â»ããã©ã«ãã§ã¯ãã¹ã¦ãé表示ã«ããã 13 // â»idã¯hrefã®å¤ã§ã#xxxxãã®ããã«æå®ãé常ã®URLã ã£ãå ´åã¯ãã®ã¾ã¾ãã¼ã¸é·ç§»ããã 14 // - 鏿ãããã¿ã³ã¯ã«ã¬ã³ã表示ããã 15 // - URLã¯ã¨ãªæååãåå¾ãã¦ãããã§æå®ãããkeyã®å¤ã¨åãå¤ãæã¤ãã¿ã³ã鏿ãããç¶æ ã«ããã 16 // 17 // ï¼run() ã§è¨å®ã§ããã¤ã³ã¹ã¿ã³ã¹ã®ãªãã·ã§ã³ã®èª¬æï¼ 18 // { 19 // classCurrent : 'is-active' // ã«ã¬ã³ãç¨ã®classå 20 // $elem : $('ul#js-disp-switch'), // æ©è½ãå®è£ ããè¦ç´ èªä½ 21 // urlQueryKey : '' // URLã¯ã¨ãªæååã®keyåï¼â»ç©ºç½ã®å ´åãURLã¯ã¨ãªæååããã®å¤ãåå¾ããªãï¼ 22 // } 23 // 24 // ï¼å®è£ ä¾ï¼ 25 // 26 // // HTML ================================= 27 // <head>å ã§ãã®JSãèªã¿è¾¼ã¿ 28 // 29 // ...ï¼çç¥ï¼... 30 // 31 // <ul id="js-disp-switch"> 32 // <li><a href="#target-01">01</a></li> 33 // <li><a href="#target-02">02</a></li> 34 // <li><a href="#target-03">03</a></li> 35 // </u> 36 // 37 // ...ï¼çç¥ï¼... 38 // 39 // <div id="target-01">ï¼è¡¨ç¤ºã¨ãªã¢01ï¼...</div> 40 // <div id="target-02">ï¼è¡¨ç¤ºã¨ãªã¢02ï¼...</div> 41 // <div id="target-03">ï¼è¡¨ç¤ºã¨ãªã¢03ï¼...</div> 42 // 43 // 44 // // ãã®JSå ã®å®è¡æ ================================= 45 // ( function ($) { 46 // 47 // ...ï¼çç¥ï¼... 48 // 49 // // å®è¡ï¼ãã¿ã³ï¼liã®ãªãã®aãªã³ã¯ï¼ã§è¡¨ç¤ºãåãæ¿ããï¼ 50 // const switchBtn01 = new DispSwitchBtn(); // çæ 51 // 52 // switchBtn01.run({ // å¦çéå§ 53 // $elem: $('ul#js-disp-switch'), // æ©è½ãå®è£ ããè¦ç´ èªä½ 54 // urlQueryKey: 'payment' // URLã¯ã¨ãªæååã®keyå 55 // }); 56 // }(jQuery)); 57 // 58 const DispSwitchBtn = function () { 59 // ---------------------------------------------------------------------------------- 60 // è¨å® 61 62 // ã¤ã³ã¹ã¿ã³ã¹å¤æ° 63 this.option = { // default 64 classCurrent: 'is-active', // ã«ã¬ã³ãç¨ã®classå 65 $elem: {}, // æ©è½ãå®è£ ããè¦ç´ èªä½ 66 urlQueryKey: '' // URLã¯ã¨ãªæååã®keyåï¼â»ç©ºç½ã®å ´åãURLã¯ã¨ãªæååããã®å¤ãåå¾ããªãï¼ 67 }; 68 69 this.$switchBtn = {}; // åãæ¿ããã¿ã³ 70 this.$switchBtnLink = {}; // åãæ¿ããã¿ã³ï¼ãªã³ã¯ï¼ 71 this.$switchTarget = {}; // åãæ¿ã対象ï¼jQueryãªãã¸ã§ï¼ 72 this.idTargetArray = []; // åãæ¿ã対象ï¼idï¼ãæ ¼ç´ããé å 73 this.queryObj = {}; // URLã¯ã¨ãªæååã®ãã©ã¡ã¼ã¿ã®æ ¼ç´ãªãã¸ã§ã¯ã 74 75 return this; 76 }; 77 78 DispSwitchBtn.prototype = { 79 // ---------------------------------------------------------------------------------- 80 // è¨å® 81 82 // ã¯ã©ã¹å¤æ° 83 count: 0, // ã¤ã³ã¹ã¿ã³ã¹æ° 84 85 // ---------------------------------------------------------------------------------- 86 // 颿°ï¼publicï¼ 87 88 // å®è¡ 89 run: function (option) { 90 this._setOption(option); // optionãè¨å® 91 this._init(); // åæå 92 this._setEvent(); // ã¤ãã³ããè¨å® 93 94 DispSwitchBtn.prototype.count++; // ã¤ã³ã¹ã¿ã³ã¹æ°ãã«ã¦ã³ã 95 }, 96 97 // ã¤ã³ã¹ã¿ã³ã¹æ°ãåå¾ 98 getCount: function () { 99 return this.count; 100 }, 101 102 // ---------------------------------------------------------------------------------- 103 // 颿°ï¼privateï¼ 104 105 // optionãè¨å® 106 _setOption: function (option) { 107 if (option) { 108 this.option = $.extend({}, this.option, option); 109 } 110 }, 111 112 // åæå 113 _init: function () { 114 let $btnLink = {}; 115 let url = ''; 116 let i; 117 let len; 118 119 this.$switchBtn = this.option.$elem.find('li'); // åãæ¿ããã¿ã³ãè¨å® 120 this.$switchBtnLink = this.$switchBtn.find('> a'); // åãæ¿ããã¿ã³ï¼ãªã³ã¯ï¼ãè¨å® 121 this.$switchTarget = $(); 122 123 // åãæ¿ããã¿ã³ï¼ãªã³ã¯ï¼ã®å 容ãåå¾ 124 for (i = 0, len = this.$switchBtnLink.length; i < len; i++) { 125 $btnLink = this.$switchBtnLink.eq(i); 126 url = $btnLink.attr('href'); 127 128 if (url.indexOf('#') !== 0) { // å é ãã#ãã§ãªãã¨ã 129 // é常ã®ãªã³ã¯ã¨ãã¦ãµãã¾ã 130 continue; 131 } 132 133 // å é ãã#ãã®ã¨ã 134 this.$switchTarget = this.$switchTarget.add($(url)); // åãæ¿ã対象ï¼jQueryãªãã¸ã§ï¼ãè¨å® 135 this.idTargetArray.push(url.replace('#', '')); // åãæ¿ã対象ï¼idï¼ãæ ¼ç´ããé åãè¨å® 136 } 137 138 this._disp(); // 表示åãæ¿ãï¼ãã¹ã¦éè¡¨ç¤ºï¼ 139 this._setQueryObj(true); // URLã¯ã¨ãªæååã®åå¾ãã¦ãã©ã¡ã¼ã¿ã«åè§£ãã¦è¨å® 140 this._selectBtnWithQuery(); // URLã¯ã¨ãªæååã§æå®ããããã¿ã³ã鏿ãã¦è¡¨ç¤º 141 }, 142 143 // 表示åãæ¿ã 144 // 弿°ï¼idãæå®ããªãå ´åã¯ãã¹ã¦é表示 145 _disp: function (id) { 146 this.$switchTarget.hide(); // ãã¹ã¦é表示 147
148 if (id) { // 対象ãããã¨ã 149 const $target = $('#' + id); 150 151 $target.show(); 152 } 153 }, 154 155 // ã«ã¬ã³ã表示 156 _current: function ($btn) { 157 this.$switchBtnLink.removeClass(this.option.classCurrent); // ã«ã¬ã³ãã¯ãªã¢ 158 $btn.find('a').addClass(this.option.classCurrent); // ã«ã¬ã³ã表示 159 }, 160 161 // URLã¯ã¨ãªæååã®åå¾ãã¦ãã©ã¡ã¼ã¿ã«åè§£ãã¦è¨å® 162 _setQueryObj: function (decodeFlg) { 163 if (this.option.urlQueryKey === '') { // 空ç½ã®å ´åãURLã¯ã¨ãªæååããã®å¤ãåå¾ããªã 164 return; 165 } 166 167 const query = window.location.search; // ã¯ã¨ãªæåå 168 const queryArray = query.replace('?', '').split('&'); // ã¯ã¨ãªæååã®ãã©ã¡ã¼ã¿ãã¨ã®é å 169 let queryPair = []; 170 let i; 171 let len; 172 173 if (query.length > 0) { // ã¯ã¨ãªæååãã 174 for (i = 0, len = queryArray.length; i < len; i++) { 175 queryPair = queryArray[i].split('='); 176 if (decodeFlg) { 177 queryPair[1] = decodeURIComponent(queryPair[1]); 178 } 179 this.queryObj[queryPair[0]] = queryPair[1]; 180 } 181 } 182 }, 183 184 // URLã¯ã¨ãªæååã§æå®ããããã¿ã³ã鏿ãã¦è¡¨ç¤º 185 _selectBtnWithQuery: function () { 186 let $btn = {}; 187 let value = ''; 188 let key; 189 190 for (key in this.queryObj) { 191 if (this.queryObj.hasOwnProperty(key) && this.option.urlQueryKey === key) { 192 value = this.queryObj[key]; 193 194 if ($.inArray(value, this.idTargetArray) !== -1) { // for IE8, = this.idTargetArray.indexOf(value) 195 $btn = this.$switchBtn.find('a[href="#' + value + '"]').closest('li'); 196 this._current($btn); // ã«ã¬ã³ã表示 197 this._disp(value); // 表示åãæ¿ã 198 } 199 break; 200 } 201 } 202 }, 203 204 _setSmoothScroll: function ($target) { 205 if ($target.length === 0) { 206 return; 207 } 208 209 $scrollElement.animate({ 210 scrollTop: $target.offset().top 211 }, 500); 212 }, 213 214 // ã¤ãã³ããè¨å® 215 _setEvent: function () { 216 const self = this; 217 218 // åãæ¿ããã¿ã³ãã¯ãªãã¯ããã¨ãï¼ã¤ãã³ãï¼ 219 self.$switchBtnLink.on('click', function (event) { 220 const $that = $(this); 221 const $thatBtn = $that.closest('li'); 222 const id = $that.attr('href'); 223 224 if ($thatBtn.hasClass(self.option.classCurrent) || id.indexOf('#') !== 0) { // ãã§ã«ã«ã¬ã³ããã¦ããã¨ããã¾ãã¯å é ãã#ãã§ãªãã¨ã 225 return; 226 } 227 228 // ã«ã¬ã³ããªãããã¤å é ãã#ãã®ã¨ã 229 event.preventDefault(); 230 self._current($thatBtn); // ã«ã¬ã³ã表示 231 self._disp(id.replace('#', '')); // 表示åãæ¿ã 232 233 setTimeout(function () { 234 self._setSmoothScroll($(id)); 235 }, 300); 236 }); 237 } 238 239 }; 240 241 // å®è¡ï¼ãã¿ã³ï¼liã®ãªãã®aãªã³ã¯ï¼ã§è¡¨ç¤ºãåãæ¿ããï¼ 242 const switchBtn01 = new DispSwitchBtn(); // çæ 243 244 switchBtn01.run({ // å¦çéå§ 245 $elem: $('ul#js-disp-switch-payment'), // æ©è½ãå®è£ ããè¦ç´ èªä½ 246 urlQueryKey: 'payment' // URLã¯ã¨ãªæååã®keyå 247 }); 248 249 const switchBtn02 = new DispSwitchBtn(); // çæ 250 251 switchBtn02.run({ // å¦çéå§ 252 $elem: $('ul#js-disp-switch-setting'), // æ©è½ãå®è£ ããè¦ç´ èªä½ 253 urlQueryKey: 'setting' // URLã¯ã¨ãªæååã®keyå 254 }); 255}(this.document, this.jQuery));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.