/********************************************* * roomid.js * ------------------------------------------- * @init * @plugin *********************************************/ /* ------------------------------------------- * @noConflict ------------------------------------------- */ jqNew = jQuery.noConflict(); if($ === undefined){ $ = jQuery; } j$ = jQuery || jqNew; /* ------------------------------------------- * @init ------------------------------------------- */ j$(function(){ var u = new EPOS_CARD.Util(); j$.downloadAccordion(); j$.downloadAccordion02(); j$.roomid_smoothScroll(); }); /* ------------------------------------------- * @plugin ------------------------------------------- */ (function(j$){ /** * @method downloadAccordion ダウンロードページアコーディオン制御+アンカーリンク制御 */ j$.downloadAccordion = function(config){ // options var c = j$.extend({ factorElement: '.js-downloadAccordion', triggerElement: '.js-downloadAccordionTrigger', panelElement: '.js-downloadAccordionPanel', slideSpeed: 300 }, config); // vars var $elm = j$(c.factorElement), accWrap = c.factorElement, accTrigger = c.triggerElement, accPanel = c.panelElement, speed = c.slideSpeed, openClass = "is-open", $accAnc = j$('.js-roomidLnavAnc a[href*="#anc"]'); // exit if($elm.length === 0){ return false; } // setting $(accPanel).hide(); // trigger $(accTrigger).on("click",function(){ var wrap = j$(this).parents(accWrap); if(wrap.hasClass(openClass)){ wrap.removeClass(openClass); wrap.find(accPanel).stop(true, true).slideUp(speed); } else { wrap.addClass(openClass); wrap.find(accPanel).stop(true, true).slideDown(speed); EPOS_CARD.module.equalHeight(true, true); EPOS_CARD.module.sizeFix(); } }); // アンカークリック時 var openAcc = function(e){ var $target = j$(e); if($target.length !== 0){ $target.addClass(openClass); $target.find(accPanel).stop(true, true).slideDown(speed); } }; $accAnc.on("click",function(){ var self = j$(this), ancID = self.attr("href"); openAcc(ancID); }); }; /** * @method downloadAccordion ダウンロードページアコーディオン制御02 */ j$.downloadAccordion02 = function(config){ // options var c = j$.extend({ factorElement: '.js-downloadAccordion02', triggerElement: '.js-downloadAccordionTrigger02', panelElement: '.js-downloadAccordionPanel02', slideSpeed: 300 }, config); // vars var $elm = j$(c.factorElement), accWrap = c.factorElement, accTrigger = c.triggerElement, accPanel = c.panelElement, speed = c.slideSpeed, openClass = "is-open", $accAnc = j$('.js-roomidLnavAnc a[href*="#anc"]'); // exit if($elm.length === 0){ return false; } // setting $(accPanel).hide(); // trigger $(accTrigger).on("click",function(){ var wrap = j$(this).parents(accWrap); if(wrap.hasClass(openClass)){ wrap.removeClass(openClass); wrap.find(accPanel).stop(true, true).slideUp(speed); } else { wrap.addClass(openClass); wrap.find(accPanel).stop(true, true).slideDown(speed); EPOS_CARD.module.equalHeight(true, true); EPOS_CARD.module.sizeFix(); } }); }; /** * @method roomid_smoothScroll roomid用スムーススクロール */ j$.roomid_smoothScroll = function(config){ var c = j$.extend({ speed: 300, easing: "swing", noScrollClass: ".roomid-noScroll", fixParts: ".heading01.hasNav", spFixNone: "js-spFixNone" }, config); /* vars ------------------------------- */ var u = new EPOS_CARD.Util(); var url = j$(location).attr("href"), hash = location.hash, href, target, position, difference; /* trigger ------------------------------- */ /* ページ遷移+アンカー移動制御 */ u.$win.on("load", function(){ if((url.indexOf("#anc") !== -1)||(url.indexOf("#info_anchor") !== -1)){ target = j$(hash); if(j$(c.fixParts).length === 0 || j$(c.fixParts).hasClass(c.spFixNone)){ position = target.offset().top - 115; if(u.isRangeSP()){ position = target.offset().top + 20; } } else { difference = j$(c.fixParts).innerHeight(); position = target.offset().top - difference; } j$("html, body").animate({ scrollTop: position }, c.speed, c.easing); } }); /* スクロール制御 */ j$("a[href^=#]").not("a[href=#], a[href^=#tab], a[href^=#modal], " + c.noScrollClass + "").click(function(){ href = j$(this).attr("href"); target = j$(href); if(j$(c.fixParts).length === 0 || j$(c.fixParts).hasClass(c.spFixNone)){ position = target.offset().top - 115; if(u.isRangeSP()){ position = target.offset().top + 20; } } else { difference = j$(c.fixParts).innerHeight(); position = target.offset().top - difference; } if(u.isRangeSP()){ j$("html, body").animate({ scrollTop: position }, c.speed, c.easing); } else { j$("html, body").animate({ scrollTop: position }, c.speed, c.easing); } return false; }); }; })(jQuery);