提问人:Caleb Nugent 提问时间:11/9/2022 最后编辑:Professor AbronsiusCaleb Nugent 更新时间:6/29/2023 访问量:49
.hide() 方法不作用于变量
.hide() Method not acting on variables
问:
我正在尝试使用 .hide() 方法在单击时隐藏元素。在下面的代码中,当我按 ID 专门选择 object1 时,我可以隐藏它。我将元素存储在变量中,但是当我在变量上使用hide()时,它不起作用。为什么当我使用变量时该方法不起作用,但在我专门选择它时工作得很好?
代码如下:
<div id="object1">Object 1</div>
<div id="object2">Object 2</div>
<input type="button" id="button" />
<script>
$(document).ready(() => {
const object1 = $('#object1');
const object2 = $('#object2');
const button = $('button');
});
button.addEventListener("click", () => {
$('#object1').hide();
});
</script>
当我使用以下代码(将$('#object1')替换为其变量)时,代码不会执行。
$(document).ready(() => {
const object1 = $('#object1');
const object2 = $('#object2');
const button = $('button');
});
button.addEventListener("click", () => {
object1.hide();
});
是我做错了什么,还是JS在这方面有限制?
编辑:
即使将事件侦听器移动到文档中,代码仍未执行。这是最新的代码
<div id="object1">Object 1</div>
<div id="object2">Object 2</div>
<input type="button" id="button" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(document).ready(() => {
const object1 = $('#object1');
const object2 = $('#object2');
const button = $('#button');
button.addEventListener("click", () => {
object1.hide();
});
});
</script>
答:
0赞
Juan Solano
11/9/2022
#1
这是一个闭包问题。单击函数的作用域不知道 object1。 您有两种选择:
选项 1:将事件侦听器移动到文档中。我个人会选择此选项,因为它可以避免污染窗口对象
$(document).ready(() => {
const object1 = $('#object1');
const object2 = $('#object2');
const button = $('button');
button.addEventListener("click", () => {
object1.hide();
});
});
选项 2:将变量移到外面,以便所有方法都可用。
let object1 = null;
let object2 = null;
$(document).ready(() => {
object1 = $('#object1');
object2 = $('#object2');
const button = $('button');
});
button.addEventListener("click", () => {
object1.hide();
});
评论