.toggle on div from <a> 不工作

.toggle on div from <a> not working

我想在单击 link 时显示隐藏的 div。我正在为我的 CMS 使用 Joomla,我已经仔细检查它是否正在加载 jQuery。这将包含我的登录信息,这是我目前拥有的信息。

HTML

<head>    
<script type="text/javascript">
    $(document).ready(function () {
        $("#login-container").toggle()
    });

    function toggleDiv(divId) {
        $("#" + divId).toggle();
    }
</script>
</head>
 <body>
<a href="javascript:toggleDiv('login-container');">Login</a>
    <div id="login-container">
        <jdoc:include type="modules" name="footer" />
    </div>
</body>

CSS

#login-container {
float: right;
z-index: 50;
padding: .2em 1.5em;
border-radius: 5px;
position: fixed;
bottom: 3em;
left: 30%;
width: 16em;
height: 9em;
background-color: #fff;
overflow: hidden;
}

等等,请尝试以下操作。没有理由在代码中有冗余。

<script type="text/javascript">
    $(document).ready(function (e) {             
         $(".toggler").click(function(){
           e.PreventDefault();
           $("#login_container").toggle();    
         });
    });
</script>
</head>
 <body>
<a href="" class='toggler'>Login</a>
    <div id="login_container">
        <jdoc:include type="modules" name="footer" />
    </div>
</body>

如果您想将其用作函数,请使用选择器和遍历来始终找到 dom 元素,并将它们命名为相同的选择器。此外,始终在名称 ID 中使用下划线是个好主意,但可以在 class 名称中使用“-”。

您可以尝试 onclick=toggleDiv(divId);return;,但肯定会有更简单的方法 jQuery。

Joomla 在无冲突模式下加载 jquery。

您必须将代码更改为:

<script type="text/javascript">
    jQuery(document).ready(function () {
        jQuery("#login-container").toggle()
    });

    function toggleDiv(divId) {
        jQuery("#" + divId).toggle();
    }
</script>

参考:jQuery.noConflict()