javascript - MooTools if/then/else 切换基于 css 类的存在

标签 javascript css class mootools toggle

我正在尝试切换一个类并根据分配给特定 div 的 css 类执行其他几个操作。

我正在使用 MooTools 1.2.5。

div 看起来像这样:

<div class="loginbox"> Login Form Here </div>

我在页面上有一个看起来像这样的链接:

<a href="#" class="loginlink">Show/Hide Login</a>

对于启用了 Javascript 的访问者,我的脚本会自动隐藏该表单。

<script type="text/javascript">

window.addEvent('domready',function() {

    $$('div.loginbox').addClass('hidden');

    $$('a.loginlink').each(function(linkitem){

        linkitem.addEvent('click', function(i){

            displayis = $$('div.loginbox').hasClass('hidden');

            if (displayis) {
                $$('div.loginbox').removeClass('hidden');
                // do several things
            } else {
                $$('div.loginbox').addClass('hidden');
                // do several other things          
            };

        });
    }); 

}); 

</script>

第一次单击“显示/隐藏登录”链接时,一切似乎都正常工作,屏幕上出现类为“loginbox”的 div。

第二次单击“显示/隐藏登录”链接时没有任何反应。使用 console.log 试图弄清楚发生了什么,它看起来像 if 语句的第一部分被评估为 true 而它显然是 false。

关于上述脚本的一件奇怪的事情是,如果我将“登录框”更改为一个 id 并相应地调整脚本,它就可以正常工作。我使用的 CMS 要求“登录框”是一个类,而不是一个 div。

简单地使用“.toggleClass('hidden')”也很有效,除了我想做的不仅仅是切换类。

感谢您的宝贵时间。

-布伦特

最佳答案

displayis = $$('div.loginbox').hasClass('hidden'); -> 这是非常多余的,因为它对 html 集合的所有成员执行 hasClass,推送结果成一个数组。

改写为:

var theHiddenEl = document.getElement("div.loginbox.hidden");

如果它有两个类,它将返回一个元素。

if (theHiddenEl) {
    theHiddenEl.toggleClass("hidden"); // or removeClass etc. 
    // ... more stuff
}
...

关于javascript - MooTools if/then/else 切换基于 css 类的存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4360075/

相关文章:

php - Javascript 中的警报消息

html - <li> 内的 img 属性为 "display: inline"超出 li 标签

css - 将背景位置从屏幕向左推

javascript - Quasar 显示来自对象的存储对象的表行

javascript - 为什么所有迭代都同时运行?

javascript - 如何在 Nivo Slider HTML 中启用自动播放

jQuery 不识别动态添加到页面的类

php - 不同查询返回相同计数值

java - 外部包无法访问类构造函数

java - 如何从另一个类访问对象(例如 ArrayList)?