使用jQuery切换类

使用jQuery切换类,jquery,html,css,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> 使用jQuery,我发现打

我在这里有一个弹出元素:

<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>
使用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");

   };

}
当运行此代码时,它会打开弹出窗口但无法关闭,任何帮助都将不胜感激


小提琴:

您可能还需要更改
打开/关闭按钮文本
我建议您以更具活力的方式进行:

<div data-togglable="contactme" data-hidden> 
    <a href="#" data-toggler="contactme"></a>
    <p>lorem ipsum.....</p>
</div>
<a href="#" data-toggler="contactme"></a>
jQ:


您可能还需要更改
打开/关闭按钮文本
我建议您以更具活力的方式进行:

<div data-togglable="contactme" data-hidden> 
    <a href="#" data-toggler="contactme"></a>
    <p>lorem ipsum.....</p>
</div>
<a href="#" data-toggler="contactme"></a>
jQ:


要完全隐藏和显示元素,不应使用
可见性:隐藏。当然,它隐藏了元素,但它仍然占据了空间。您想使用
display:none
以完全隐藏元素。jQuery为此调用了一些函数,这些函数将设置/取消设置元素的
显示值

在本例中,由于您希望在这两种状态之间切换,请查看执行该操作的函数

工作示例:

编辑:对于动画版本,请签出,然后单击

工作示例(动画):

HTML

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

$(function() {

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

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

    });

});

要完全隐藏和显示元素,不应使用
可见性:隐藏。当然,它隐藏了元素,但它仍然占据了空间。您想使用
display:none
以完全隐藏元素。jQuery为此调用了一些函数,这些函数将设置/取消设置元素的
显示值

在本例中,由于您希望在这两种状态之间切换,请查看执行该操作的函数

工作示例:

编辑:对于动画版本,请签出,然后单击

工作示例(动画):

HTML

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

$(function() {

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

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

    });

});

把你的html改成这个

<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>

只需将您的html更改为

<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>

更改:

onclick="toggle_contactme"
致:

更改:

onclick="toggle_contactme"
致:


为什么不直接使用
.toggleClass()
?而且
onclick=“toggle\u contactme”
应该是
onclick=“toggle\u contactme”(
)。这看起来可以工作,错误是什么?它应该可以工作,但由于某种原因,当我单击关闭链接时,它会打开然后不关闭啊一个愚蠢的小错误,关闭链接有
()从正在调用的函数结尾处缺失!顺便说一句,如果
,你的
后面会有一个分号。为什么不直接使用
.toggleClass()
?而且
onclick=“toggle\u contactme”
应该是
onclick=“toggle\u contactme”(
)。这看起来可以工作,错误是什么?它应该可以工作,但由于某种原因,当我单击关闭链接时,它会打开然后不关闭啊一个愚蠢的小错误,关闭链接有
()从正在调用的函数结尾处缺失!你有一个分号来结束你的
,如果
,顺便说一句,那么我可以只做
$(“#联系我”).hide()吗?刚刚用工作JSFIDLE更新,请查看!我使用可见性的唯一原因是:隐藏
是这样,我可以向它添加过渡持续时间,除非您知道如何向正在更改其
显示的内容添加动画。当然,请签出,然后单击。这应该是你所需要的。那么我可以只做
$(“#contactme”).hide()吗?刚刚用工作JSFIDLE更新,请查看!我使用可见性的唯一原因是:隐藏
是这样,我可以向它添加过渡持续时间,除非您知道如何向正在更改其
显示的内容添加动画。当然,请签出,然后单击。这应该是你需要的。