使用jQuery Toggle更改div文本

olo*_*olo 24 javascript string jquery toggle

使用时slideToggle,如何更改文本关闭/显示?我做了一个简单的,但无法将文本更改回来.

这是我做的:

$(document).ready(function(){
    $('.open').click(function(){        
            $('.showpanel').slideToggle('slow');
            $(this).text('close');
    });
    
        $('.open2').click(function(){        
            $('.showpanel2').slideToggle('slow');
            $(this).text('close');
    });        
});
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/9EFNK/

dan*_*man 41

您可以使用is()断言方法检查动画的回调中面板是打开还是关闭,并相应地设置文本 - 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');                
        }        
    });       
});
Run Code Online (Sandbox Code Playgroud)

  • 很好地使用回调函数来检查动画完成后的可见性并相应地更改文本,这是最好的答案:) (3认同)

Mar*_*ers 14

只需添加一个简单的if语句来测试文本就像这样

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

       $('.showpanel').slideToggle('slow');
       if($(this).text() == 'close'){
           $(this).text('Show');
       } else {
           $(this).text('close');
       }
});
Run Code Online (Sandbox Code Playgroud)

喜欢这个DEMO


hjp*_*r92 7

不是最漂亮的方法,但它只在一个语句中完成工作.

$(this).text(($(this).text() == 'Close') ? 'Show' : 'Close');
Run Code Online (Sandbox Code Playgroud)