jquery - 使用 jQuery 切换类

标签 jquery html css

我这里有一个弹出元素:

<div id="contactme" class="closed"> 
   <a href="javascript:void(0);" onclick="toggle_contactme">Close</a>       
</div>
<a href="javascript:void(0);" onclick="toggle_contactme">Open</a>

我制作了两个类 .open.closed,每个类都带有 css:

.closed{
  visibility: hidden;
}
.open{
  visibility: visible;
}

使用 jQuery 我发现打开和关闭弹出窗口时出错,我不确定是 CSS 还是 jQuery 不正确。

点击打开或关闭按钮时的函数如下:

function toggle_contactme(){

   if ($("#contactme").hasClass("closed")) {

       $("#contactme").removeClass("closed").addClass("open");

   }else if ( $("#contactme").hasClass("open") ){

       $("#contactme").removeClass("open").addClass("closed");

   };

}

运行此代码时,它会打开弹出窗口但无法关闭它,我们将不胜感激!

fiddle :http://jsfiddle.net/ZXCEv/

最佳答案

要完全隐藏和显示元素,您不应使用 visibility: hidden;。当然,它隐藏了元素,但它仍然占据着空间。您想要使用 display: none; 来完全隐藏元素。 jQuery 有这个调用的函数 .hide.show()这将设置/取消设置元素的 display 值。

在这种情况下,由于您希望在两种状态之间切换,请查看 .toggle()正是这样做的功能。

工作示例:http://jsfiddle.net/ZXCEv/1/

编辑:对于动画版本,查看 .fadeOut() , .fadeIn().fadeToogle() .

工作示例(动画):http://jsfiddle.net/ZXCEv/3/

HTML

<a href="#" class="hidden">Close</a>
<a href="#">Open</a>

CSS

.hidden {
    display: none;
}

jQuery

$(function() {

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

        // $('a').toggle(); // Unanimated
        $('a').fadeToggle(); // Animated

    });

});

关于jquery - 使用 jQuery 切换类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24985270/

相关文章:

jQuery Ajax GET 在 Web API 核心 Controller 中调用错误的方法

jquery - HTML/JQuery : A div with a scrolling backgrounds that never ends?

jquery - 在移动 View 中显示小部件演示

html - div 元素中的数据属性并显示在::after 伪元素上

html - 居中表格

javascript - 幻灯片放映的间隔时间不起作用

javascript - 在表中排序 JSON 数据

javascript - 如何在页面加载和自动点击时获取警报消息内容

php - 我应该如何将 PHP 登录脚本链接到 mysql 数据库以进行验证?

javascript - 在悬停时突出显示表格行显示列之间的空白