首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的$(Document).ready(.ready())不能执行?

为什么我的$(Document).ready(.ready())不能执行?
EN

Stack Overflow用户
提问于 2021-05-31 15:45:28
回答 2查看 66关注 0票数 0

我的html视图上有一个复选框,如下所示:

代码语言:javascript
复制
<input type="checkbox" id="hasPrereqBlock" name="hasPrereqBlock" onchange="hasPrereqBlockHandler(this)">

由它触发的函数看起来是这样的:

代码语言:javascript
复制
function hasPrereqBlockHandler(cb){
    if (cb.checked){
        $("#campaignPrereqBlockRevDiv").show();
        $("#instruction_1_RevDiv_M").hide();
        $("#instruction_2_RevDiv").show();
    } else {
        $("#campaignPrereqBlockRevDiv").hide();
        $("#instruction_1_RevDiv_M").show();
        $("#instruction_2_RevDiv").hide();
    }
}

当我加载页面时,我想执行这个函数,并给它一个对复选框的引用,这样它就只显示想要的东西,因为复选框的状态,所以我有这个函数:

代码语言:javascript
复制
$(document).ready(function() {
    hasPrereqBlockHandler($("#hasPrereqBlock"));
});

我也尝试过使用document.getElementById("hasPrereqBlock")而不是$("#hasPrereqBlock"),但这3个元素都会显示出来,只有当我单击复选框时它们才会隐藏起来。为什么我的代码不能工作?

代码语言:javascript
复制
function hasPrereqBlockHandler(cb) {
  if (cb.checked) {
    $("#campaignPrereqBlockRevDiv").show();
    $("#instruction_1_RevDiv_M").hide();
    $("#instruction_2_RevDiv").show();
  } else {
    $("#campaignPrereqBlockRevDiv").hide();
    $("#instruction_1_RevDiv_M").show();
    $("#instruction_2_RevDiv").hide();
  }
}



$(document).ready(function() {
  console.log("document ready");
  hasPrereqBlockHandler($("#hasPrereqBlock"));
});
代码语言:javascript
复制
#campaignPrereqBlockRevDiv,
#instruction_2_RevDiv {
  display: none;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="hasPrereqBlock" name="hasPrereqBlock" onchange="hasPrereqBlockHandler(this)">

<div id="instruction_1_RevDiv_M">Review 1</div>
<br>
<div id="instruction_2_RevDiv">Review 2</div>
<br>
<div id="campaignPrereqBlockRevDiv">Campaing</div>

EN

回答 2

Stack Overflow用户

发布于 2021-05-31 15:53:03

您的jQuery对象没有.checked。如果你console.log cb.checked,它返回undefined而不是布尔值,所以你知道有问题。jQuery checkbox对象上不存在.checked

更改:

代码语言:javascript
复制
cb.checked

进入:

代码语言:javascript
复制
cb.prop('checked')
票数 2
EN

Stack Overflow用户

发布于 2021-05-31 16:08:00

你把JavaScript和jQuery混在一起了!正如dcangulo所述,将您发送的元素更改为文档就绪部分中的函数:

代码语言:javascript
复制
$(document).ready(function() {
    hasPrereqBlockHandler($("#hasPrereqBlock").get(0));
});

get返回给定索引处的元素,由于存在一个元素(您使用的是一个ID,所以我假设只有一个),所以它发送第一个元素。发送到函数的元素与检查输入时发送的this值相同。

more information about the get function

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67769725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档