【问题标题】:JavaScript function not being called when trying to hide/unhide a div尝试隐藏/取消隐藏 div 时未调用 JavaScript 函数
【发布时间】:2018-06-13 01:27:50
【问题描述】:

我在自己的 .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 函数似乎永远不会被调用,当我选中/取消选中复选框时没有任何反应。请问我做错了什么?

【问题讨论】:

  • 不会在复选框元素上触发“加载”事件。浏览器不这样做。
  • 另外,"load" 事件在 jQuery 中是用.ready() 调用的。 .load 做别的事情。

标签: javascript razor


【解决方案1】:

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

实际上没有任何类似的事件可以直接在元素上使用...如果你真的需要那种事件来触发你的函数,也许 .ready() 可以完成这项工作。

编辑

要在页面加载时触发该功能,同时保持其编码方式,您可以简单地在所需复选框上触发一个更改事件: $(".mailing-address-checkbox").trigger("change");

在此行之后包含该行,它应该可以按预期工作:

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

触发更改事件不会更改值,但会执行与事件关联的函数。您可以在jQuery documentation 中阅读更多相关信息。

【讨论】:

  • 我尝试.load() 的目的是在选中复选框时隐藏“邮件地址控件”,如果在页面加载期间未选中则取消隐藏。页面可以在选中或不选中框的情况下加载。所以,既然JS代码已经被$(document).ready(() =&gt;包裹了,是否可以将默认页面加载行为设置为$(".mailing-address-checkbox").mailingAddressCheckbox();
  • @Emilia 我编辑了我的答案,让你有可能实现你想要的。
  • 谢谢!!在$(".mailing-address-checkbox").change(mailingAddressCheckbox); 之后调用$(".mailing-address-checkbox").trigger("change"); 并删除$(".mailing-address-checkbox").load(mailingAddressCheckbox); 行对我有用!
猜你喜欢
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-27
  • 1970-01-01
相关资源
最近更新 更多