$(function(){ /*--シンプルアコーディオン--*/ var clickFlag = [], slideFlag = 0, aaa = 0, defText = []; $(".js-simple-accordion-wrap").css("position", "relative"); $(".js-simple-accordion-content").css({ "position": "static", "visibility": "visible" }); //$(".js-simple-accordion-content").children().height(0); $(".js-simple-accordion-btn").on("click",function(){ var self = $(this); var parents = self.closest(".js-simple-accordion-wrap"), closeText = self.attr("data-close-text"), textHide = self.attr("data-hide"), anchor = $(this).attr("data-scroll-anchor"), changeClass = self.attr("data-change-class"), parentLen; $(".js-simple-accordion-content").children().height("auto"); $(".js-simple-accordion-wrap").each(function(i){ if($(this).offset().top == parents.offset().top){ parentLen = i; } }); if(clickFlag[parentLen] == undefined){ clickFlag[parentLen] = 0; } //テキストを消す場合 if(textHide == "true"){ self.hide(); }else{ //文字の切り替え if(clickFlag[parentLen] == 0){ // console.log(1); if(self.text() != closeText){ defText[parentLen] = self.text(); } self.text(closeText); clickFlag[parentLen]++; }else{ // console.log(2); self.text(defText[parentLen]); clickFlag[parentLen] = 0; } } if(changeClass){ if(self.hasClass(changeClass)){ self.removeClass(changeClass); }else{ self.addClass(changeClass); } } //ターゲットクラスのアコーティオン slideFlag = clickFlag[parentLen]; //開く if(slideFlag == 0){ parents.find(".js-simple-accordion-content:eq(0)").hide(); parents.find(".js-simple-accordion-content:eq(0)").stop().slideDown().css({ "position":"static", "visibility":"visible" }); //閉じる }else{ //アンカーがあった場合のみ、ターゲットアンカーまでスクロール if(anchor){ var headerHei = $("#header .row-03").height(), achorScroll = ($("#"+anchor).offset().top - headerHei); $("html,body").animate({ scrollTop: achorScroll+"px" }); } parents.find(".js-simple-accordion-content:eq(0)").stop().slideUp().css({ "position":"static", "visibility":"visible" }); } return false; }); //アコーディオンを閉じる $(".js-accordion-up").on("click",function(){ var parents = $(this).parents(".js-simple-accordion-wrap"); parents.find(".js-simple-accordion-btn").show().removeClass("hide"); parents.find(".js-simple-accordion-content").slideUp(); return false; }); $(".js-accordion-add").accordion({ firstView : 8, addNum : 8 }); // $(".mod-review .review-list").accordion({ // firstView : 3, // addNum : 5 // }); }); /*--アコーディオンプラグイン *options - firstView = 初めに表示する件数 - addNum = 追加していく数 - slide = スライドアニメーションの有無 */ $.fn.accordion = function(op){ op = $.extend({ addNum : 5, slide : "on" },op); return this.each(function(){ var $this = $(this), contentNum = $this.find(".js-accordion-addcontents").length, contentsObj = $this.find(".js-accordion-addcontents"); //追加テキストの表示・非表示 if(op.firstView >= contentNum){ $this.find(".js-accordion-addtext").hide(); } for(var i = 0;i < contentNum;i++){ if(i < op.firstView){ $this.find(".js-accordion-addcontents:eq("+i+")").show(); }else{ $this.find(".js-accordion-addcontents:eq("+i+")").css({ 'position': 'absolute', 'visibility': 'hidden' }); } } var viewNum = op.firstView; $this.find(".js-accordion-addtext").on("click",function(){ if(contentNum > viewNum){ for(var i = 0;i < op.addNum;i++){ if(op.slide == "on"){ $this.find(".js-accordion-addcontents:eq("+(viewNum+i)+")").hide(); $this.find(".js-accordion-addcontents:eq("+(viewNum+i)+")").slideDown().css({ 'position': 'static', 'visibility': 'visible' }); }else{ $this.find(".js-accordion-addcontents:eq("+(viewNum+i)+")").css({ 'position': 'static', 'visibility': 'visible' }); } } } if(contentNum <= (viewNum+op.addNum)){ $this.find(".js-accordion-addtext").hide(); } viewNum += op.addNum; return false; }); }); }