1

我在下面有这段代码,用于控制在下拉列表中切换时隐藏显示哪个颜色块。

但是,它仅在我对下拉列表进行更改(即选择一种颜色)时才有效。但我也需要它在加载时显示正确的色块。

现在无论加载的“值”如何,它都会默认显示#red_ok。

我如何编辑此代码以实现此目的?

 $(function () {
   $("#product-select-option-1").change(function() {
     var val = $(this).val();

    if(val === "Red") {
       $("#red_ok").css({"display":"block"});
       $("#yellow_ok").css({"display":"none"});

    }
    else if(val === "Yellow") {
        $("#yellow_ok").css({"display":"block"});
        $("#red_ok").css({"display":"none"});

    }  }); });

.

#red_ok {width:25px; height:25px; background:#c40314;}
#yellow_ok {display:none; width:25px; height:25px; background:#f5d116;}
4

1 回答 1

4

change只需手动触发事件:

$(function () {
    // binds the change event-handler:
    $("#product-select-option-1").change(function () {
        var val = $(this).val();

        if (val === "Red") {
            $("#red_ok").css({
                "display": "block"
            });
            $("#yellow_ok").css({
                "display": "none"
            });

        } else if (val === "Yellow") {
            $("#yellow_ok").css({
                "display": "block"
            });
            $("#red_ok").css({
                "display": "none"
            });

        }
    // triggers the change event:
    }).change();
});

JS 小提琴演示

但是,可以将上述内容简化为:

$(function () {
    $("#product-select-option-1").change(function () {
        $('div[id$="ok"]').hide();
        $('#' + this.value.toLowerCase() + '_ok').show();
    }).change();
});

JS 小提琴演示

参考:

于 2013-10-04T10:24:25.810 回答