Accordion öffnen mit Javascript Link

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • cheche
    Contao-Nutzer
    • 08.03.2010
    • 105

    #1

    Accordion öffnen mit Javascript Link

    Möchte ein Accordion öffnen von einer anderen Position einer Seite.
    Habe schon einige Threads zu diesem Thema gefunden. Folgendes war sehr hilfreich:



    Besonders die Lösung mit dem Javascriptlink:
    <a onclick="Accord.accordion.display(4)" href="javascript: return true">LINK</a>

    Das ist es genau und funktioniert grundsätzlich, leider verhält sich dann das Accordion auch seltsam. Klappt 2 mal auf usw. Ich denke es liegt daran dass das Accordion 2 mal aufgerufen wird. Bin leider nicht so gut in Javascript, vielleicht könnte mir jemand sagen wie man den folgenden Code verbessert bzw. kombiniert und der Link oben noch funktioniert:

    Code:
    //Code für den Javascriptlink
    
    var Accord = { 
    	init: function(){
    		this.accordion = new Accordion($$('div.toggler'), $$('div.accordion'));
    	}
    }
    window.addEvent('domready', Accord.init.bind(Accord));
    
    
    //Normale Accordiondefinition
    
    window.addEvent('domready', function() {
      new Accordion($$('div.toggler'), $$('div.accordion'), {
        alwaysHide: true,
        opacity: false,
      //display: -1, // -1, alle Akkordions sind am Anfang eingeklappt
        onActive: function(toggler,elem) {
    		toggler.addClass('active');
           },
    
        onBackground: function(toggler,elem) {
    		toggler.removeClass('active');
           }
      });
      $$('div.toggler').each(function(elem){
    	elem.addEvents({
    		'mouseenter': function(){
    			elem.addClass('hover');
    		},
    		'mouseleave': function(){
    			elem.removeClass('hover');
    		}
    	});
      });
    });
    Danke im Voraus!

    cheche
    Zuletzt geändert von cheche; 10.02.2011, 11:45.
  • cheche
    Contao-Nutzer
    • 08.03.2010
    • 105

    #2
    Poste hier selber gleich die Lösung. Kann sicher wer brauchen ;-)

    Code:
    // Accordion
    
    var Accord = { 
    	init: function(){
    	this.accordion = new Accordion($$('div.toggler'), $$('div.accordion'), {
        display: <?php 
    	$aid=$_GET[id];
        if  ($aid== '') {
        echo "-1";
        }
        else {
        echo $aid;
        }
        ?>,
        alwaysHide: true,
        opacity: false,
    
    onActive: function(toggler,elem) {
    		toggler.addClass('active');
           },
    
        onBackground: function(toggler,elem) {
    		toggler.removeClass('active');
           }
      });
    $$('div.toggler').each(function(elem){
    	elem.addEvents({
    		'mouseenter': function(){
    			elem.addClass('hover');
    		},
    		'mouseleave': function(){
    			elem.removeClass('hover');
    		}
    	});
      });
    	}
    }
    window.addEvent('domready', Accord.init.bind(Accord));
    Hier der Aufruf von einem Textlink:
    <a onclick="Accord.accordion.display(4)" href="javascript: return true">Link</a>

    Die Nummer in der Klammer display(4) ist die Accordion id (Beginnt bei 0)

    Viel Spaß!

    cheche

    Kommentar

    • operatorone
      Contao-Fan
      • 19.06.2009
      • 557

      #3
      Hi cheche,

      funktioniert das auch mit einem j_accordion oder nur mit mootools?

      Viele Grüße,
      operatorone

      Kommentar

      • cheche
        Contao-Nutzer
        • 08.03.2010
        • 105

        #4
        Kann ich dir leider nicht so sagen. kenn das j_accordion nicht, aber ich könnte mir vorstellen dass es an die Gegebenheiten angepasst grundsätzlich funktionieren kann.
        Bin leider nicht der javascriptexperte ... eher javascriptbastler ;-)
        cheche

        Kommentar

        • 4lmnts
          Contao-Nutzer
          • 28.01.2011
          • 169

          #5
          Hallo Cheche

          Bei mir funktioniert das irgendwie nicht.
          Habe im Layout moo_accordion aktiviert und im Feld "Eigener Javascript-Code" deinen Code reinkopiert.
          Dann im Textelement deinen Link-Code mit ID="0" eingegeben:
          <a onclick="Accord.accordion.display(0)" href="javascript: return true">LINK</a>
          Und ja, es hat mehrere normale Mootools-Accordions auf der selben Seite

          Was mache ich falsch?

          Beste Grüsse
          Nick

          Kommentar

          • cheche
            Contao-Nutzer
            • 08.03.2010
            • 105

            #6
            mmhh ...gute Frage. Ist schon eine Weile her! Seit 2011 hat sich viel getan und es gab es schon einige Updates usw... probier mal andere id's
            Schicke eventuell mal einene Link zu einer Testseite.
            lg cheche

            Kommentar

            Lädt...