Slider und if/else bringt Zeichen nicht zurück wenn geschlossen

Jan-Frederik Stieler

Monsterator
Moderator
Hallo,
ich bräuchte mal wieder eine kleine Hilfe bei einem Script was ich geschrieben habe:
Javascript:
<script type="text/javascript">// <![CDATA[
$(document).ready(function(){
        $("#quicksandslider").hide();
        
        $("a.open-close").click(function () {
            $("#quicksandslider").slideToggle('slow', function() {
                if ($('#quickslider').show())
                {
                     $('a.open-close').html("—");
                }
                else
                {
                     $('a.open-close').html("+");
                }
            });
        });
        
    });
// ]]></script>
Und zwar habe ich das Problem das ich das + nicht mehr bekomme wenn der Slider zu ist.

Viele Grüße
 
Ohne Markup ist das unmöglich. Was ist der Unterschied zwischen "#quickslider" und "#quicksandslider" (typo?)?

Nirgendwo steht, dass "show" einen Wert zurückliefert, der an gibt, ob das Element sichtbar ist. Denn show() ist chainable und liefert lediglich das Objekt selbst zurück.

Zum Prüfen eignet sich "is(':visible')" ganz gut.

Hier ein Beispiel: http://jsfiddle.net/Y2xec/
 
Vielleicht nicht ganz so schön aber es geht:


Javascript:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>

<script type="text/javascript">//
$(document).ready(function(){

        $("#quicksandslider").hide();
        $("#close").hide();

        $("#open").click(function () {
            $("#quicksandslider").slideToggle('slow', function() {
            $("#open").hide();
			$("#close").show();
        	});
        });

        $("#close").click(function () {
            $("#quicksandslider").slideToggle('slow', function() {
            $("#open").show();
			$("#close").hide();
        	});
        });

    });
</script>

<div id="quicksandslider">Slider</div>
<a href="#" id="open">+</a>
<a href="#" id="close">-</a>
 
Hallo jungs,
nun #quickslider gibt es nicht. Ist ein Schreibfehler meinerseits.
Ich wußte nicht das .show nichts zurück gibt.
Ich habe das Script jetzt so umgeschrieben
Javascript:
<script type="text/javascript">// <![CDATA[
$(document).ready(function(){
        $("#quicksandslider").hide();
        
        $("a.open-close").click(function () {
            $("#quicksandslider").slideToggle('slow', function() {
                if ($('#quicksandslider').is(':visible'))
                {
                     $('a.open-close').html("—");
                }
                else
                {
                     $('a.open-close').html("+");
                }
            });
        });
        
    });
// ]]></script>

Das Script von dir, Cpoly, hat irgendwie immer meinen Firefox zum Absturz gebracht, warum auch immer.

Ich danke euch!

Viele Grüße
 
Zurück