• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

accordion - jquery

Object Storage Arubacloud
+1 głos
227 wizyt
pytanie zadane 4 lipca 2021 w JavaScript przez tirex Gaduła (4,430 p.)
edycja 4 lipca 2021 przez tirex

Cześć,

mama problem z accordion. Całość napisana w jquery. Nie mogę uzyskać efektu aby po kliku w tytuł, treść się rozsuwa a nie jak teraz pojawia od razu.

Druga sprawa chciałbym uzyskać taki efekt, że po kliku w aktywny tytuł (kolor zielony) zamykał się on razem z treścią. Teraz jest tak, że po kliku w inny tytuł zamyka się aktywny tytuł z treścią.

 

https://jsfiddle.net/h3wr6z95/1/

 

html

<div class="accordion">
   
     <div class="title title1"><h3>text1</h3><span class="icon icon1"></span></div>
    
    
    <p class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec erat urna, aliquet sed leo ac, bibendum pharetra metus. Sed pharetra sed leo a dapibus. Cras scelerisque congue tincidunt. Quisque ut venenatis mi, eu sodales nisl. Donec auctor eros eget venenatis mattis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nunc nulla urna, dictum sit amet pulvinar egestas, tempor at est. Mauris pellentesque nibh enim, sed imperdiet mi faucibus efficitur. Fusce quis tincidunt nulla. Sed condimentum lacus mattis nisi gravida porta. Curabitur vel rutrum turpis, vitae semper turpis. Nulla in aliquet sapien. Maecenas consectetur tortor et magna malesuada, efficitur euismod dui aliquam.
        Cras non eleifend neque. Suspendisse porta, sapien a accumsan semper, est ex cursus mauris, vel auctor dolor sapien a nunc. Suspendisse eleifend mollis mi, eget iaculis ipsum dignissim non. Maecenas ac dictum lorem, ut euismod tellus. Phasellus ac ante eget lectus feugiat euismod ac id urna. Mauris eget augue urna. Sed odio ligula, consectetur vitae justo nec, porta sagittis magna. Pellentesque cursus vitae dolor sit amet pharetra.</p>

        <div class="title title2"><h3>text1</h3><span class="icon icon2"></span></div>
        
        <p class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec erat urna, aliquet sed leo ac, bibendum pharetra metus. Sed pharetra sed leo a dapibus. Cras scelerisque congue tincidunt. Quisque ut venenatis mi, eu sodales nisl. Donec auctor eros eget venenatis mattis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nunc nulla urna, dictum sit amet pulvinar egestas, tempor at est. Mauris pellentesque nibh enim, sed imperdiet mi faucibus efficitur. Fusce quis tincidunt nulla. Sed condimentum lacus mattis nisi gravida porta. Curabitur vel rutrum turpis, vitae semper turpis. Nulla in aliquet sapien. Maecenas consectetur tortor et magna malesuada, efficitur euismod dui aliquam.
            Cras non eleifend neque. Suspendisse porta, sapien a accumsan semper, est ex cursus mauris, vel auctor dolor sapien a nunc. Suspendisse eleifend mollis mi, eget iaculis ipsum dignissim non. Maecenas ac dictum lorem, ut euismod tellus. Phasellus ac ante eget lectus feugiat euismod ac id urna. Mauris eget augue urna. Sed odio ligula, consectetur vitae justo nec, porta sagittis magna. Pellentesque cursus vitae dolor sit amet pharetra.</p>
            
            <div class="title title3"><h3>text1</h3><span class="icon icon3"></span></div>
            <p class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec erat urna, aliquet sed leo ac, bibendum pharetra metus. Sed pharetra sed leo a dapibus. Cras scelerisque congue tincidunt. Quisque ut venenatis mi, eu sodales nisl. Donec auctor eros eget venenatis mattis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nunc nulla urna, dictum sit amet pulvinar egestas, tempor at est. Mauris pellentesque nibh enim, sed imperdiet mi faucibus efficitur. Fusce quis tincidunt nulla. Sed condimentum lacus mattis nisi gravida porta. Curabitur vel rutrum turpis, vitae semper turpis. Nulla in aliquet sapien. Maecenas consectetur tortor et magna malesuada, efficitur euismod dui aliquam.
                Cras non eleifend neque. Suspendisse porta, sapien a accumsan semper, est ex cursus mauris, vel auctor dolor sapien a nunc. Suspendisse eleifend mollis mi, eget iaculis ipsum dignissim non. Maecenas ac dictum lorem, ut euismod tellus. Phasellus ac ante eget lectus feugiat euismod ac id urna. Mauris eget augue urna. Sed odio ligula, consectetur vitae justo nec, porta sagittis magna. Pellentesque cursus vitae dolor sit amet pharetra.</p>
   </div> 

css

p.text {
  height: 0;
  opacity: 0;
}

.title {
  color: green;
  height: 50px;
  line-height: 50px;
  border: 1px solid black;
  padding: 0 0 0 15px;
  margin-bottom: 3px;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  position: relative;
  z-index: 1
}

h3 {
  margin: 0;
}

p {
  color: black;
  font-size: 15px;
  border: 1px solid black;
  padding: 0 0 0 15px;
  margin-top: 0
}

.active-title {
  background-color: green;
  color: white;
  transition: all 0.5s ease-in-out;
}

.icon {
  background: url('1.jpg');
  background-size: contain;
  width: 20px;
  height: 20px;
  background-repeat: no-repeat;
  float: right;
  margin: 13px;
}

.active-icon {
  background: url('1.jpg');
  background-size: contain;
  width: 20px;
  height: 20px;
  background-repeat: no-repeat;
  float: right;
  margin: 13px;
  transform: rotate(180deg);
}

js

(function($){

$(document).ready(function(){

var collapseall = true;
    var titles = $(".title"),
    texts = $("p.text"),
    icon = $("span.icon");



texts.animate({height:'0',opacity:'0'},200); 


        $(titles).click(function(){

            
if(collapseall){


       titles.removeClass("active-title"); ///usuwa kolor
     
      texts.stop().animate({height:'0',opacity:'0'}); 
}

            var that = $(this),
            
                text = that.next();
                isVisible = text.is('height','0');

               
                that.toggleClass('active-title',!isVisible);
              
        if(!isVisible){
         
           
           // that.addClass('active-title');
		text.stop().animate({height:'100%',opacity:'1'},200);
           
        }
        else{
            //that.removeClass("active-title");
         
          
			text.stop().animate({height:'0',opacity:'0'},200);
			
			
			
        }
		
		

       

if($('.title1').hasClass('active-title')){
    $('.title1 .icon').addClass("active-icon");
    $('.title2 .icon').removeClass("active-icon");
    $('.title3 .icon').removeClass("active-icon");
	
			
  
}
else if($('.title2').hasClass('active-title')){
    $('.title2 .icon').addClass("active-icon");
    $('.title1 .icon').removeClass("active-icon");
    $('.title3 .icon').removeClass("active-icon");
  
}
else if($('.title3').hasClass('active-title')){
    $('.title3 .icon').addClass("active-icon");
    $('.title1 .icon').removeClass("active-icon");
    $('.title2 .icon').removeClass("active-icon");
  
}


else {
    $('.title .icon').removeClass("active-icon")
  
}




        });
});


})(jQuery);

 

Nie używam slideUp i slideDown tylko height i opacity.

komentarz 4 lipca 2021 przez Wiciorny Ekspert (269,710 p.)
wrzuć kod do bloczków dostępnych na forum.
1
komentarz 4 lipca 2021 przez tirex Gaduła (4,430 p.)
Kod wrzucony.

2 odpowiedzi

0 głosów
odpowiedź 5 lipca 2021 przez VBService Ekspert (252,740 p.)

Może jeszcze raz spróbuj napisać kod jquery w oparciu o te strony

Widgets.Accordion
Accordion Widget API

0 głosów
odpowiedź 5 lipca 2021 przez pablop76 VIP (123,120 p.)

Skorzystaj z each zamiast tworzyć ify i właściwie w tym kodzie można ogarnąć cała logikę przy odpowiednio zaprojektowanym szablonie

$( ".accordion" ).on( "click", ".title",function() {
    $all = $(".title");
    $theat = $(this)
    $all.each(function() {
    $(this).removeClass( "active-title active-icon" );
    $theat.addClass("active-title")
  });
});

 

komentarz 6 lipca 2021 przez tirex Gaduła (4,430 p.)
W takim razie jakie rozwiązanie proponujesz?

Podobne pytania

+1 głos
2 odpowiedzi 182 wizyt
pytanie zadane 10 stycznia 2021 w JavaScript przez Pawel82 Użytkownik (740 p.)
0 głosów
1 odpowiedź 137 wizyt
pytanie zadane 20 czerwca 2020 w JavaScript przez Pawel82 Użytkownik (740 p.)
0 głosów
1 odpowiedź 149 wizyt
pytanie zadane 3 marca 2017 w JavaScript przez paciek Początkujący (480 p.)

92,555 zapytań

141,402 odpowiedzi

319,540 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...