javascript - 带有多个slideToggle的jQuery

标签 javascript jquery

我有一些最初隐藏在页面上的表单。当用户单击页面上的特定链接时,会使用 jQuery slipToggle 显示相应的表单。我现在做这件事的方式似乎是经过深思熟虑的,必须有一种更简洁的方式来做这件事。谁能帮助我更有效地做到这一点,即更少的代码、最佳实践等?

    // Show & Hide the forms on the "We need your help" page
        jQuery('.contribute-form').hide();
        jQuery('.translate-form').hide();
        // Contribute Form
        jQuery('.contribute').on('click', function(){
            if(jQuery('.translate-form').css('display', 'block')){
                jQuery('.translate-form').slideToggle('slow');
                jQuery('.contribute-form').slideToggle('slow');
            } else if(jQuery('.donate-form').css('display', 'block')){
                jQuery('.donation-form').slideToggle('slow');
                jQuery('.contribute-form').slideToggle('slow');
            } else {
                jQuery('.contribute-form').slideToggle('slow');
            }
        });
        // Translate Form
        jQuery('.translate').on('click', function(){
            if(jQuery('.donate-form').css('display', 'block')){
                jQuery('.donate-form').slideToggle('slow');
                jQuery('.translate-form').slideToggle('slow');
            } else if(jQuery('.contribute-form').css('display', 'block')){
                jQuery('.contribute-form').slideToggle('slow');
                jQuery('.translate-form').slideToggle('slow');
            } else {
                jQuery('.translate-form').slideToggle('slow');
            }
        });
       // Donate Form
        jQuery('.donate').on('click', function(){
            if(jQuery('.translate-form').css('display', 'block')){
                jQuery('.translate-form').slideToggle('slow');
                jQuery('.donate-form').slideToggle('slow');
            } else if(jQuery('.contribute-form').css('display', 'block')){
                jQuery('.contribute-form').slideToggle('slow');
                jQuery('.donate-form').slideToggle('slow');
            } else {
                jQuery('.donate-form').slideToggle('slow');
            }
        });

最佳答案

首先,使用美元别名来获得更简洁的代码。然后,将选择器组合到单个语句中。最后,将 is() 方法与 :visible 一起使用,而不是摆弄 CSS。

jQuery(function($) {
    $('.contribute').on('click', function(){
        if ( $('.translate-form').is(':visible') ) {
            $('.translate-form, .contribute-form').slideToggle('slow');
        } else if ( $('.donate-form').is(':visible') ) {
            $('.donation-form, .contribute-form').slideToggle('slow');
        } else {
            $('.contribute-form').slideToggle('slow');
        }
    });
});

我确信使用类和 DOM 遍历可以进一步简化您的逻辑。如果您想将代码放在 http://jsfiddle.net 的演示中我们可以提供更多建议。

关于javascript - 带有多个slideToggle的jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25941555/

相关文章:

javascript - 无法切换文本

javascript - HTML5 中的 TCP/IP 套接字通信

javascript - 使用 Measurement Protocol 时 Google Analytics 屏幕时间不正确

php - 搜索一个<td>,并编辑另一个<td>的内容

javascript - 将内部 div 的宽度设置为容器的宽度

javascript - 将 Jquery 可过滤组合转换为选项选择

javascript - 如何在 Canvas 元素上呈现来自 FontAwesome 的字形

javascript - Plotly.js - 热图动画未显示

php - Ajax 到 php 调用不成功

javascript - 创建琐事测验 - 我对 for 循环功能有疑问