【问题标题】:Optimization of a jQuery code一个jQuery代码的优化
【发布时间】:2014-03-16 04:54:23
【问题描述】:

我在这里尝试检测option[name='admin'] 的选择,如果是,那么我选中提到的复选框,如果不是,我取消选中它。

这段代码有更好的优化吗?

$("select option[name='admin']:selected").select(function () {
    $(".gestionSupervision").prop('checked', true);
});

$("select option[name='sei']:selected").select(function () {
    $(".gestionSupervision").prop('checked', false);
});

HTML:

<select name="role" id="role" class="form-control" disabled>
    <option value="admin">Administrateur</option>
    <option value="sei">Superviseur</option>
</select>

非常感谢!!

【问题讨论】:

    标签: jquery optimization query-optimization


    【解决方案1】:

    您可以使用以下代码更容易理解:

    $('select#role').on('change', function (e) {
        var optionSelected = $("option:selected", this),
            selectedVal = this.value;
    
        if(selectedVal == "admin") {
            $(".gestionSupervision").prop('checked', true);
        } else {
            $(".gestionSupervision").prop('checked', false);
        }
    }).change();
    

    Fiddle Demo

    或者您可以将上面的代码缩短为:

    $('select#role').on('change', function (e) {
        var selectedVal = $(this).find('option:selected').val();
        $(".gestionSupervision").prop('checked', selectedVal == "admin");
    }).change();
    

    Fiddle Demo

    【讨论】:

    • 非常感谢您的回复,我已投赞成票!
    【解决方案2】:

    我认为你需要使用更改事件

    $("#role").change(function () {
        $(".gestionSupervision").prop('checked', $(this).find('option[value="admin"]').is(':selected'));
    }).change();
    

    演示:Fiddle

    【讨论】:

    • 非常感谢您的回复,我已投赞成票!
    【解决方案3】:

    大概是这样的:

    $("select option:selected").select(function () {
        status = (this.val() == 'sei')
        $(".gestionSupervision").prop('checked', status);
    });
    

    无需重复整个过程,只需更改名称/布尔值。

    【讨论】:

      猜你喜欢
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多