Ändern Sie den div-Text mit jQuery Toggle

Lesezeit: 3 Minuten

Benutzer-Avatar
olo

Beim Benutzen slideToggle, wie ändere ich den Text Schließen/Anzeigen? Ich habe eine einfache gemacht, kann aber die Textänderung nicht zurückbekommen.

Folgendes habe ich getan:

$(document).ready(function(){
    $('.open').click(function(){        
            $('.showpanel').slideToggle('slow');
            $(this).text('close');
    });
    
        $('.open2').click(function(){        
            $('.showpanel2').slideToggle('slow');
            $(this).text('close');
    });        
});
body{
font-size:20px;
}
#box{
    border:2px solid #000;
    width:500px;
    min-height:300px;      
}
.open,.open2 {
    width:450px;
    height:50px;
    background:blue;
    margin:5px auto 0 auto;
    color:#fff;     
    }
.showpanel,.showpanel2{
    width:450px;
    height:300px;
    margin:0 auto 10px auto;
    background:red;
    display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="box">

<div class="open">Show</div>
<div class="showpanel">This is content</div>

<div class="open2">Show</div>
<div class="showpanel2">This is content</div>
</div>

http://jsfiddle.net/9EFNK/

Benutzer-Avatar
Danwellmann

Du kannst den … benutzen is() Assertion-Methode, um zu prüfen, ob das Panel im Callback der Animation geöffnet oder geschlossen ist, und den Text entsprechend festzulegen – http://jsfiddle.net/9EFNK/7/

$('.open').click(function(){
    var link = $(this);
    $('.showpanel').slideToggle('slow', function() {
        if ($(this).is(':visible')) {
             link.text('close');                
        } else {
             link.text('open');                
        }        
    });       
});

  • Nette Verwendung einer Rückruffunktion, um die Sichtbarkeit zu überprüfen, nachdem die Animation beendet ist, und den Text entsprechend zu ändern. Dies ist die beste Antwort hier 🙂

    – Markus Walters

    18. Oktober 2012 um 7:43 Uhr

Fügen Sie einfach eine einfache if-Anweisung hinzu, um den Text so zu testen

$('.open').click(function(){

       $('.showpanel').slideToggle('slow');
       if($(this).text() == 'close'){
           $(this).text('Show');
       } else {
           $(this).text('close');
       }
});

So was DEMO

  • Danke Kumpel, schön und einfach.

    – Dave Goosem

    17. Februar 2013 um 4:49 Uhr

  • Die beste Antwort! Vielen Dank.

    – Benutzer2519032

    29. Juni 2017 um 7:51 Uhr

Nicht die schönste Methode, aber sie erledigt den Job in einer einzigen Anweisung.

$(this).text(($(this).text() == 'Close') ? 'Show' : 'Close');

Verwenden Sie .toggle()

Hier ist Arbeitsdemo

$('.open').click(function(){    
        $('.showpanel').slideToggle('slow');                  
    }).toggle(function() {
            $(this).text('Hide');
        }, function() {
            $(this).text('Show');
        });

Überprüfen Sie, ob die Benutzerfrage gelöst ist Geige

  • +1 für $(this).html(‘Show’):$(this).html(‘close’); Das wusste ich nicht

    – Dipak

    18. Oktober 2012 um 7:45 Uhr

  • Das heißt, wenn der aktuelle HTML-Text von div geschlossen ist, ändert er sich in „Anzeigen“ und wenn er angezeigt wird, ändert er sich in „Schließen“. ‘?’ ist ein ternärer Operator

    – Mann Programmierer

    18. Oktober 2012 um 7:51 Uhr

Benutzer-Avatar
Pantelis

Hier ist eine aktualisierte Version http://jsfiddle.net/9EFNK/1/

Sie können eine Klasse einfach beim Schließen/Öffnen umschalten, eine Prüfung für diese Klasse durchführen und den enthaltenen Text entsprechend ändern

if( $(this).hasClass('active') )
  $(this).text('open');
else
  $(this).text('Show');

$(this).toggleClass('active');

  • +1 für $(this).html(‘Show’):$(this).html(‘close’); Das wusste ich nicht

    – Dipak

    18. Oktober 2012 um 7:45 Uhr

  • Das heißt, wenn der aktuelle HTML-Text von div geschlossen ist, ändert er sich in „Anzeigen“ und wenn er angezeigt wird, ändert er sich in „Schließen“. ‘?’ ist ein ternärer Operator

    – Mann Programmierer

    18. Oktober 2012 um 7:51 Uhr

Benutzer-Avatar
Pragnesh Chauhan

Versuche dies Demo

$(document).ready(function(){
$('.open').toggle(function(){    
        $('.showpanel').slideToggle('slow');
        $(this).text('close');
}, function(){
    $('.showpanel').slideToggle('slow');
    $(this).text('Show');
});

    $('.open2').toggle(function(){

        $('.showpanel2').slideToggle('slow');
        $(this).text('close');
    }, function(){
        $('.showpanel2').slideToggle('slow');
        $(this).text('Show');
    });   
});​

1145340cookie-checkÄndern Sie den div-Text mit jQuery Toggle

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy