代码之家  ›  专栏  ›  技术社区  ›  aBlaze

试图隐藏/取消隐藏一个DIV时未调用javascript函数

  •  0
  • aBlaze  · 技术社区  · 6 年前

    我在自己的.js文件中有以下javascript代码,它试图隐藏/取消隐藏带有类“mailing address controls”的DIV,这取决于是否选中了“mailing address checkbox”。如果复选框值发生更改,我希望在页面加载时发生此情况:

    $(document).ready(() => {
    
        function mailingAddressCheckbox() {
            if ($(this).is(":checked"))
                $(".mailing-address-controls").addClass("hidden");
            else
                $(".mailing-address-controls").removeClass("hidden");
        }
    
        $(".mailing-address-checkbox").load(mailingAddressCheckbox);
        $(".mailing-address-checkbox").change(mailingAddressCheckbox);
    });
    

    我有以下razor.cshtml代码定义了“邮寄地址复选框”和“邮寄地址控件”:

    <label class="control">
        @Html.CheckBoxFor(model => model.IsMailingSameAsPhysical, new { @class = "mailing-address-checkbox" })
        @Html.LabelFor(model => model.IsMailingSameAsPhysical)
    </label>
    <div class="mailing-address-controls df fww cols hidden">
        ......
    </div>
    

    但是, mailingAddressCheckbox 函数似乎从未被调用,当我选中/取消选中该复选框时,不会发生任何事情。我做错什么了?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Jeff Noel    6 年前

    .load() 不是一个事件侦听器,而是一个在页面中加载远程内容的函数。

    .ready() 如果您真的需要这种事件来触发您的函数,那么可以执行该任务。

    $(".mailing-address-checkbox").trigger("change");

    $(".mailing-address-checkbox").change(mailingAddressCheckbox);
    

    触发更改事件不会更改值,但会执行与事件关联的操作。您可以在 jQuery documentation