首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript - dry语句

javascript - dry语句
EN

Stack Overflow用户
提问于 2014-12-26 08:27:51
回答 3查看 284关注 0票数 0

我对编码还不熟悉,但我一直在读关于干-不要重复你自己。

我有一个不适合DRY方法的JavaScript if/else语句,但我无法解决如何编写JavaScript if/else语句,这样就不会重复内容。

我希望有一个比我聪明的人能给我看。

这是我的代码:

代码语言:javascript
复制
    {% if user.get_profile.subscription_category == '00' %}

        $('#id_name_details_prefix_title').addClass('kmw-disabled');

        $('#id_name_details_first_name').addClass('kmw-disabled');

        $('#id_name_details_middle_name').addClass('kmw-disabled');

        $('#id_name_details_last_name').addClass('kmw-disabled');

        $('#id_name_details_suffix_title').addClass('kmw-disabled');

    {% else %}

        {% if user.get_profile.display_virtual_keyboard %}

            $('#id_name_details_prefix_title').removeClass('kmw-disabled');

            $('#id_name_details_first_name').removeClass('kmw-disabled');

            $('#id_name_details_middle_name').removeClass('kmw-disabled');

            $('#id_name_details_last_name').removeClass('kmw-disabled');

            $('#id_name_details_suffix_title').removeClass('kmw-disabled');

        {% else %}

            $('#id_name_details_prefix_title').addClass('kmw-disabled');

            $('#id_name_details_first_name').addClass('kmw-disabled');

            $('#id_name_details_middle_name').addClass('kmw-disabled');

            $('#id_name_details_last_name').addClass('kmw-disabled');

            $('#id_name_details_suffix_title').addClass('kmw-disabled');

        {% endif %}

    {% endif %}

第一条if的内容在第二条if语句的其他部分中重复--我希望我只需要写一次重复的内容。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-26 08:31:42

您可以将选择器放在数组中。

代码语言:javascript
复制
var selectors = [#id_name_details_prefix_title', '#id_name_details_first_name' ...];

然后添加/删除类

代码语言:javascript
复制
$(selectors.join(',')).addClass('kmw-disabled')
票数 3
EN

Stack Overflow用户

发布于 2014-12-26 08:34:38

把它分解成隔离正在发生的事情的函数。

代码语言:javascript
复制
{% if something %}
    functionThathAddsClass();
{% else %}
    {% if something_else %}
        functionThatRemovesClass();
    {% else %}
        functionThathAddsClass();
    {% endif %}
{% endif %}

在本例中,您将遇到创建两个全局函数的问题,但这是一个不同的问题。

我喜欢制作,我个人称之为CSS警卫。CSS卫队基本上只是一个对象,它的功能是戳和刺激DOM。

代码语言:javascript
复制
var NameDetailsGuard = {
    functionThathAddsClass = function () {
        $('#id_name_details_prefix_title').addClass('kmw-disabled');
        $('#id_name_details_first_name').addClass('kmw-disabled');
    },
    functionThatRemovesClass = function () {
        $('#id_name_details_prefix_title').removeClass('kmw-disabled');
        $('#id_name_details_first_name').removeClass('kmw-disabled');
    }
};

你就这样用它

代码语言:javascript
复制
NameDetailsGuard.functionThatAddsClass();

这样做的另一个好处是,如果您扩展了这个概念,您就可以开始在这个对象中进行更简单的DOM节点缓存,这样就可以在每次保留对它的引用并对其进行操作时,不再查询选择器。

票数 0
EN

Stack Overflow用户

发布于 2014-12-26 08:42:45

您可以向需要的元素中添加一些类(在HTML标记中)并按该类进行选择。

例如,添加category-zerovirtual-keyboard类并使用以下方法:

代码语言:javascript
复制
{% if user.get_profile.subscription_category == '00' %}

    $('.category-zero').addClass('kmw-disabled');

{% else %}

    {% if user.get_profile.display_virtual_keyboard %}

        $('.virtual-keyboard').removeClass('kmw-disabled');

    {% else %}

        $('.virtual-keyboard').addClass('kmw-disabled');

    {% endif %}

{% endif %}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27654693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档