0

我在下面有这个 jQuery 代码:

$("#options").popup(null, Settings.DialogOptions)
.on("onOk", function(){
    Settings.SaveSettings( );
    Settings.CloseSettings( );

    switch(Settings.GetSetting("displayId")){
        case "true":
            $("#nextId").show();
            $("label[for=nextId]").show();
        break;

        case "false":
            $("#nextId").hide();
            $("label[for=nextId]").hide();
        break;
    }
});

我必须测试我的代码的案例:

  1. displayId = false代码工作正常,它隐藏了我的两个元素
  2. displayId = true代码不起作用,我的元素没有显示回来。

我在控制台中没有收到任何错误,但我不知道该怎么做才能使我的代码正常工作。谁能帮助我?

4

1 回答 1

1

如果您真的在处理字符串,则可能是空格或大写问题:

// ----v                                 -----v
switch($.trim(Settings.GetSetting("displayId")).toLowerCase() === "true"){
    case true:                             // <== No quotes
        $("#nextId").show();
        $("label[for=nextId]").show();
    break;

    case false:                            // <== No quotes
        $("#nextId").hide();
        $("label[for=nextId]").hide();
    break;
}

当然,如果您要处理的是真还是假,if/else则标准构造是:

if ($.trim(Settings.GetSetting("displayId")).toLowerCase() === "true"){
    $("#nextId").show();
    $("label[for=nextId]").show();
}
else {
    $("#nextId").hide();
    $("label[for=nextId]").hide();
}

或者当您只是基于标志显示/隐藏时:

$("#nextId").add("label[for=nextId]").toggle($.trim(Settings.GetSetting("displayId")).toLowerCase() === "true");
于 2013-07-30T15:34:39.577 回答