javascript - JQuery - 显示/隐藏一组字段

标签 javascript jquery refactoring hide show

我想使用选择的值作为条件来显示或隐藏某些字段。我不想重复自己再次编写循环只是为了显示和隐藏字段。我想使用相同的循环代码来显示或隐藏。什么是最好的方法?

hideFields = function () {
    var fields = $(['#foo', '#bar', '#lorem', '#ipsum'])
        showHide = function (action) {
            if (action === 'show' || action === 'hide') {
                action = action + '();';
                fields.each(function (index, value) {
                    $(value).parent()
                        .parent()
                        .action(); // call show||hide here... not working...
                });
            }
        };

    if ($('#select').val() === 'something') {
        showHide('hide');
    }
    else {
        showHide('show');
    }
};

hideFields();

谢谢。

最佳答案

您可以使用 jQuery 的 toggle() 方法来显示和隐藏元素:

$(".fields").toggle();

这样,您就不必担心它们的状态,也不必让 jQuery 判断它们是否需要隐藏。

您还可以将 bool 值传递给仅显示或仅隐藏元素的方法:

$(".fields").toggle(true); // Shows elements, equivalent to show()
$(".fields").toggle(false); // Hides elements, equivalent to hide()

如果你需要做一些额外的逻辑,你总是可以使用 $().css() 查询元素的 CSS 属性,然后决定从那里做什么。

关于javascript - JQuery - 显示/隐藏一组字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7214754/

相关文章:

Jquery SlideToggle 和滚动

javascript - 将经典 ASP Javascript 包含升级到 .net

php - 应该会出现 pdf 下载选项

javascript - ajax中按日期对表格列进行排序

javascript - 排序 HTML 表格长日期

javascript - JS AJAX typeahead 结果排序/竞争条件

jquery - 为什么下面的 Jquery Ajax 调用只执行一次?

javascript - 使用 Jquery 创建基于 Web 的 "bulletin board pin map";拖/放/碰撞/等

mysql - Liquibase 数据库重构

refactoring - 跟踪错误数据库中的重构