/********************************************* * point_use.js --------------------------------------------- @constructor @init @plugin *********************************************/ /* ------------------------------------------- * @constructor ------------------------------------------- */ var u = new EPOS_CARD.Util(); // u インスタンスを作成 /* ------------------------------------------- * @init ------------------------------------------- */ j$(function(){ u.$win.on("load",function(){ j$.earn_accordion(); j$.point_equalHeight(true,true); }); }); /* ------------------------------------------- * @plugin ------------------------------------------- */ (function(j$){ /* * @method point_equalHeight * - ポイントを使う用高さ揃え * @param {Boolean} * - 文字可変・リサイズに対応するかどうか */ j$.point_equalHeight = function(fsCheck, wsCheck, opCheck){ var className = ".point-eqHeight", childBaseName = "point-eqChild", cancelName = "sp-eqCancel", opacityBoxName = "point-eqHeightBox", $elm = j$(className), $children = $elm.children(), $spChildren = $elm.not("." + cancelName).children(),// SP時に有効となる要素 winW = u.$win.width(), fsCheck = fsCheck || false, wsCheck = wsCheck || true, opCheck = wsCheck || true, spCheck = false; if($elm.length === 0 || $children.length < 2){ return false; } if(winW < u.breakPoint1){ spCheck = true; } /* childBaseNameのグループ化 */ var grouping = function(w){ var $groupedChildren = $elm.find("*[class*=" + childBaseName + "]"), classNames = {},groups = []; $groupedChildren.each(function(){ var splitClass = j$(this).attr("class").split(" "), splitClassNum = splitClass.length, newClassName; for(var i = 0; i < splitClassNum; i++){ newClassName = splitClass[i].match(RegExp(childBaseName + "[a-z0-9,_,-]*", "i")); if(!newClassName){ continue; } else { newClassName.toString(); classNames[newClassName] = newClassName; } } }); // childBaseNameの格納 for(var c in classNames){ if(w < u.breakPoint1){ groups.push($elm.not("." + cancelName).find("." + c));// SP時にcancelNameを持つ要素を対象から外す } else { groups.push($elm.find("." + c)); } } return groups; }; /* 各要素の高さを揃える */ var equalHeight = function(elm){ var maxHeight = 0; elm.css("height", "auto"); elm.each(function(){ if(j$(this).outerHeight() > maxHeight){ maxHeight = j$(this).outerHeight(); } }); return elm.outerHeight(maxHeight); }; /* init */ var init = function(){ var winW = u.$win.width(), groups = grouping(winW), $opacityBox = j$('.' + opacityBoxName).not(":hidden"); if(opCheck && $opacityBox.length !== 0 && !$opacityBox.hasClass("on")){ $opacityBox.parent().css("position", "relative"); $opacityBox.before(''); $opacityBox.css("opacity", "0") } var eqAct = function(eqObj){ var h = [], child = [], maxHeight = 0, top = 0; j$.each(eqObj, function(){ var $group = j$(this).not(":hidden");// 非表示要素に適用させない場合.not(":hidden")を付与 $group.each(function(i){ j$(this).css("height", "auto"); h[i] = j$(this).outerHeight(); if(top != j$(this).position().top){ equalHeight(j$(child)); child = []; top = j$(this).position().top; } child.push(this); }); }); if(child.length > 1){ equalHeight(j$(child)); } } // childBaseName要素の高さを揃える eqAct(groups); // 子要素の高さを揃える if(winW < u.breakPoint1){ // SP時 eqAct($spChildren); j$("." + cancelName).children().css("height", "auto"); j$("." + cancelName).find("*[class*=" + childBaseName + "]").css("height", "auto"); } else { // PC時 eqAct($children); setTimeout( function(){ j$(".equalChild_bottom").css({ top: "inherit", bottom: 0 }); },100); } if(opCheck && $opacityBox.length !== 0 && !$opacityBox.hasClass("on")){ j$('.point-eqHeightLoadingIcon').remove(); $opacityBox.parent().css("position", ""); $opacityBox.animate({opacity: 1}, 500).addClass("on"); } }; // 文字可変への対応可否 fsCheck ? u.isFontSizeCheck(init) : init(); wsCheck ? u.isWindowSizeCheck(init) : init(); }; /* * @plugin earn_accordion */ j$.earn_accordion = function(){ var c = { elm: ".earn-toggleWrap", trigger: ".earn-toggleTrigger", target: ".earn-toggleContent", speed: 300, openNm: "open" }; var u = new EPOS_CARD.Util(); // u インスタンスを作成 // vars var $elm = j$(c.elm), $trg = j$(c.trigger); if($elm.length === 0){ return false; } // setting function earnAccordion(){ var targetHeight = j$(c.target).innerHeight(); j$(c.target).not("." + c.openNm).css('height', '340px'); // trigger $trg.on("click",function(){ var self = j$(this), $wrap = self.parents(c.elm), $target = $wrap.find(c.target); if(self.hasClass(c.openNm)){ self.removeClass(c.openNm); $target.stop().animate({ height: '340px' }).removeClass(c.openNm); //$target.stop().slideUp(c.speed); } else { self.addClass(c.openNm); $target.stop().animate({ height: targetHeight, overflowY: '' }, {complete: function(){ $target.css({height: "auto"}); }}).addClass(c.openNm); EPOS_CARD.module.equalHeight(true, true); EPOS_CARD.module.sizeFix(); } }); } if(u.isRangeSP()){ earnAccordion(); }else{ j$(c.target).css('height', ''); } }; })(jQuery);