我想使用select的值作为标准来显示或隐藏一些字段。我不想重复自己重复循环以显示和隐藏字段。我想使用相同的循环代码来显示或隐藏。最好的方法是什么?

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(boolean) 值传递给仅显示或隐藏元素的方法:
$(".fields").toggle(true); // Shows elements, equivalent to show()
$(".fields").toggle(false); // Hides elements, equivalent to hide()

而且,如果您需要执行一些额外的逻辑,则始终可以使用$()。css()查询元素的CSS属性,并从那里决定要做什么。

09-30 13:41
查看更多