jQuery accordion scroll na začetek

Imam temo za Wordpress, katera ima tudi jQuery kodo za accordion vnose (harmonika). Ti lepo delujejo, moti pa me to, da se ob odprtju vnosa z daljšim tekstom stran (scroll) ne postavi na začetek besedila. Zanima me, če ima kdo kakšen nasvet oz. če bi bil kdo pripravljen to prilagoditi, za plačilo seveda. Bistveni del kode jQuery je tak:

jQuery(".accordion_title").click(
        function() {
            jQuery(this).siblings('.accordion_content').slideUp("fast");
            jQuery(this).siblings('.accordion_title').removeClass('accordion_active');
            if(jQuery(this).hasClass('accordion_active')) {
                jQuery(this).removeClass('accordion_active');
            } else {
                jQuery(this).addClass('accordion_active');
                jQuery(this).next('.accordion_content').slideDown("fast");
            }
        }
    );

4 odgovori

Tole bi moralo delati:

jQuery(".accordion_title").click(
        function() {
            jQuery(this).siblings('.accordion_content').slideUp("fast");
            jQuery(this).siblings('.accordion_title').removeClass('accordion_active');
            if(jQuery(this).hasClass('accordion_active')) {
                jQuery(this).removeClass('accordion_active');
            } else {
                jQuery(this).addClass('accordion_active');
                jQuery(this).next('.accordion_content').slideDown("fast");
                jQuery('.accordion_active').animate()
                jQuery('html, body').animate({
                    scrollTop: jQuery(".accordion_content").offset().top - 10
                }, 300);
            }
        }
    );
4

Da ne bova preko private msg-jev in da ostane še za zanamce :)... malo sem se zatipkal, tukaj imaš popravljeno kodo:

jQuery(".accordion_title").click(
        function() {
            jQuery(this).siblings('.accordion_content').slideUp("fast");
            jQuery(this).siblings('.accordion_title').removeClass('accordion_active');
            if(jQuery(this).hasClass('accordion_active')) {
                jQuery(this).removeClass('accordion_active');
            } else {
                jQuery(this).addClass('accordion_active');
                jQuery(this).next('.accordion_content').slideDown("fast");
                jQuery('.accordion_active').animate()
                jQuery('html, body').animate({
                    scrollTop: jQuery(".accordion_active").offset().top - 10
                }, 300);
            }
        }
    );

Če ti še to ne bo najbolje delalo, probaj skopirat animate funkcijo v finish event od jQuery(this).next('.accordion_content').slideDown("fast");

4

Sej na koncu sem tako ali tako mislil objavit rešitev še tu, da ostane še za koga drugega. Sem proval s to zadnjo kodo in je isto, kot prej. Za tiste vnose, kjer je več vsebine, se še vedno ne premakne (dovolj) na začetek odprtega accordiona. Kje pa je potem finish event, ker te vrstice so edine za accordion v .js datoteki ?

Evo, da objavim še končno rešitev:

jQuery(".accordion_title").click(
   function() {
       jQuery(this).siblings('.accordion_content').slideUp("fast");
       jQuery(this).siblings('.accordion_title').removeClass('accordion_active');
      if(jQuery(this).hasClass('accordion_active')) {
     jQuery(this).removeClass('accordion_active');
 } else {
            jQuery(this).addClass('accordion_active');
            jQuery(this).next('.accordion_content').slideDown("fast", function(){
            jQuery('html, body').animate({
            scrollTop: jQuery(".accordion_active").offset().top - 10
          }, 300);
     });
 }
}
);

Najlepša hvala uporabniku @krifa za vso pomoč in njegov čas.

1