jQuery text()改变了toggle()?

bat*_*bat 3 javascript jquery toggle

我想创建一个脚本,根据其他元素可见性更改切换链接文本.

因此,虽然#form是可见的,但我希望#form-container文本为"Hide ...",虽然它是隐藏的,但我希望文本为"Show ...".

我试过这一行 - 如果($('#form').是(":visible")){另一种方式:if($('#form').is(":visible")=="true "){ - 但它也不起作用.

怎么了?每次切换另一个项目时如何更改文本?

$('.toggle').click(
    function()
    {
        $('#form').slideToggle();

            if($('#form').is(":visible")){
                $('#form-container a').text("Hide form container");
            }
            else {
                $('#form-container a').text("Show form container");  
            } 
    });
Run Code Online (Sandbox Code Playgroud)

谢谢.

Nic*_*ver 14

它在动画时始终可见,您可以检查.slideToggle()回调中的可见性,以便检查完成动画的时间,如下所示:

$('.toggle').click(function() {
  $('#form').slideToggle(function() {
    $('#form-container a').text(
      $(this).is(':visible') ? "Hide form container" : "Show form container"
    );
  });
});
Run Code Online (Sandbox Code Playgroud)

  • @bat - 你在检查之前调用`.slideToggle()`,所以当它显示它时*刚刚开始显示,它几乎不可见,但它是`:visible`.当你关闭它时,动画需要时间(400毫秒),所以当检查运行时它仍然关闭......在任何一种情况下,它都是`:visible`,有意义吗? (2认同)