使用CSS动画,在单击时切换jQuery透明度

4
我可能有点蠢,但我似乎无法使它工作。我所要做的就是在点击某物(在这种情况下,#register)时更改几行CSS。
我希望点击它一次后,它会出现,然后如果您再次单击它,它将消失。我编写了以下代码,当您第一次单击它时,它会显示出来,但是当您再次单击它时,它不会消失。我真的搞不懂我错在哪里。XD 感谢您能给予的任何帮助 :P

我的JavaScript代码

$(document).ready(function () {
    $('#registerButton').click(function () {
        if ($("#register").css("opacity") === ".9") {
            $("#register").css({
                "opacity": "0"
            });
            $("#register").css({
                "height": "0px"
            });
        }

        if ($("#register").css("opacity") === "0") {
            $("#register").css({
                "opacity": ".9"
            });
            $("#register").css({
                "height": "260px"
            });
        }
    });
});

编辑: 我想要这样使用它,以便我可以制作一些漂亮的 css 动画,因此仅使用 toggle 函数 是行不通的 :(


你是否使用过 console.log() 或调试器来查看 .css() 返回的不透明度实际值? - Pointy
.css() 返回的值是一个带有前导零 0.9 的字符串,顺便说一下,它可能会返回类似于 "0.8999999761581421" 的东西。 - Hashem Qolami
2
我假设你正在使用jQuery,那为什么不直接使用.toggle()呢?在我看来更简单... - Dryden Long
请检查代码,看是否没有同时进入两个if语句并保持可见。 - André Junges
1个回答

14

选项1

如果你只想切换它的隐藏/可见性,你可以这样做:

$('#registerButton').on('click', function()
{
    $('#register').toggle();
});

选项2

如果您想使用CSS动画,可以像这样使用toggleClass

$('#registerButton').on('click', function()
{
    $('#register').toggleClass('show hide');
});

然后按照以下方式添加您的CSS选择器

.show
{
    display: block;
    height: 260px;
}

.hide
{
    display: none;
    height:0;
}

选项3

使用if语句检查不透明度

$('#registerButton').on('click', function()
{
  var register = $('#register');

  // register is not visible lets make it visible.
  if(register.css('opacity') === '0')
  {
    register.css({
      'opacity': '0.9',
      'height': '260px'
    });
  }
  else //We know the opacity is not 0 lets make it 0.
  {
    register.css({
      'opacity': '0',
      'height': '0'
    });
  }
});

查看选项3的工作示例http://jsfiddle.net/rnhV5/


+1虽然这并没有解决“if”语句不起作用的根本问题,但对于OP的应用程序来说,我认为这是更好的做法... - Dryden Long
我有一些CSS动画效果在那里。使用它们,它们仍然有效吗? - Holabola
@user2395132,请查看我的答案中的第二个选项,这将允许使用CSS动画/过渡效果。 - Kyle Needham
@user2395132 我刚刚添加了第三个选项,如果您想看看如何按照原来的方式使其工作,可以尝试一下。不过我建议使用选项1,因为它对于您的任务来说是最有效的。 - Kyle Needham
当我想要直接点击一个元素来“隐藏”或“显示”它时,不透明度选项(#3)非常好用。谢谢! - james.garriss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接