• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Mootools Fx.Slide Toggle Problem

MasterofDistres

Kleiner Weinapfel
Registriert
07.12.06
Beiträge
1.139
Hallo,
ich hab auf meinem Blog (Wordpress) mithilfe von Mootools den Slideeffekt für das Kommentarformular eingebaut, sodass dieses erst nach einem Klick auf „Einen Kommentar schreiben“ eingeblendet wird; funktioniert auch alles ganz wunderbar.

Das Script:
Code:
window.addEvent( 'domready', function(){
	$$( '.moreDiv' ).each(function(item){
		var thisSlider = new Fx.Slide( item.getElement( '.more' ), { duration: 500 } );
		thisSlider.hide();
		item.getElement( '.divToggle' ).addEvent( 'click', function(){ thisSlider.toggle(); } );
	} );
} );

Der HTML-Code:
Code:
<div class='moreDiv'>
	<div class='divToggle'>
	<h2 id="postcomment">Schreibe <span>einen Kommentar:</span></h2>
</div>
	<div class='more'>
Inhalte...
</div>
</div>

Jetzt habe ich aber eben ein Plugin zum Zitieren von Kommentaren eingebaut, das nach einem Klick auf selbiges zum Kommentarformular scrollt und den Inhalt in das Textfeld einfügt.

Der Code für den Einfüg-Link
Code:
 function quote_comments_link($before='<p class="quote_comments">', $after='</p>', $text='Diesen Beitrag zitieren') {
        global $comment;
        print $before.'<a class="quote_comments_link" onclick="quoteComment('.$comment->comment_ID.')" href="#commentform">'.$text.'</a>'.$after;
    }

Soweit, so gut: Jetzt könnte es natürlich ein wenig verwirrend sein, dass das Formular noch ausgeblendet ist, weshalb ich jetzt versucht habe, dass das Feld automatisch eingeblendet wird, wenn man auf den „Zitier“-Link klickt; nur leider kann ich mir überhaupt nicht behelfen, wie ich den Link und das Script so vereinbaren kann. Oder ist das gar nicht möglich?
 

MrNase

Champagner Reinette
Registriert
11.01.05
Beiträge
2.656
Bin mir nicht zu 100% sicher dich auch richtig verstanden zu haben. :)

In deinem Script steht ja:
Code:
item.getElement( '.divToggle' ).addEvent( 'click', function(){ thisSlider.toggle(); } );

Das setzt einen Event Handler auf alles was die Klasse „divToggle“ besitzt. Per Klick auf diesen Layer (in deinem Fall) wird die Funktion toggle() auf den Layer mit dem Kommentarfeld angewendet (und der Effekt wird ausgelöst).

Jetzt müsstest du dem Zitier-Link auch noch ne Klasse geben (sagen wir mal class="linkToggle") und dann müsstest du den Code noch anpassen:
Code:
item.getElement( '.linkToggle' ).addEvent( 'click', function(){ thisSlider.toggle(); return false; } );


Dann sollte es eigentlich funktionieren (wenn ich dich richtig verstanden habe ;)). :)
 

MasterofDistres

Kleiner Weinapfel
Registriert
07.12.06
Beiträge
1.139
Danke schonmal :)

Ich hab deinen Code mal verwendet, jedoch wird das Feld dann sofort eingeblendet, auch bevor man auf den Link geklickt hat.
Ich kann mal eben die Seite mit einwerfen, das könnte evtl. noch helfen (Also einfach mal einen Beitrag mit einigen Kommentaren anschauen (Ein Klick auf „einen Kommentar“ blendet dann das Formular ein)
 

MrNase

Champagner Reinette
Registriert
11.01.05
Beiträge
2.656
Wenn du meinen Code verwendest müsstest du bei dir im Template noch was ändern.

Aus dem Link:
<a href="#postcomment" title="Einen Kommentar schreiben">Einen Kommentar schreiben</a>

Muss dann werden:
<a href="#postcomment" title="Einen Kommentar schreiben" class="linkToggle">Einen Kommentar schreiben</a>

:)