[英]Undefined reference - jQuery selector vs JavaScript variables
这更多是一个普遍的好奇心问题。
我碰巧有以下jQuery代码段(类似于我编写的许多代码段):
$(document).ready(function() {
var light = document.getElementById('light');
var black = document.getElementById('black_overlay');
$('#galeria_popup').click(function() {
light.style.display='block';
black.style.display='block';
});
$('#black_overlay').click(function() {
light.style.display='none';
black.style.display='none';
});
});
这非常好用。 但是,先前的迭代是:
$(document).ready(function() {
$('#galeria_popup').click(function() {
$('#light').style.display='block';
$('#black').style.display='block';
});
$('#black_overlay').click(function() {
$('#light').style.display='none';
$('#black').style.display='none';
});
});
除了控制台中出现Undefined reference
错误外,我所知道的应该可以使用。
我了解JavaScript是异步的,并且在DOM加载时编写和调用代码的顺序非常重要。 但这都在$(document).ready
函数内部,而<script>
标记位于<body>
标记的末尾。 我很好奇为什么会这样,为什么不总是这样。
这是因为jQuery对象 ,例如$('#light')
/ $('#black')
没有style
属性。
您需要访问jQuery对象中的DOM元素:
$('#galeria_popup').click(function() {
$('#light')[0].style.display='block';
$('#black')[0].style.display='block';
});
..要么
$('#galeria_popup').click(function() {
$('#light').get(0).style.display='block';
$('#black').get(0).style.display='block';
});
..或仅使用jQuery方法:
$('#galeria_popup').click(function() {
$('#light, #black').show();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.