我正在尝试使用jQuery将全局变量的值传递给 $(window).load 和 $(document).ready
为什么以下代码不会生成包含值'aaa'的警告框? - 我该如何实现这一目标?
我需要在文档加载时计算具有某个类的元素数,然后在页面准备好后,使用该值来发布操作。
var globalVariable = 'somevalue';
$(window).load(function() {
globalVariable = 'aaa';
})
$(document).ready(function() {
// globalVariable = 'bbb';
alert(globalVariable);
})
编辑:如何检测某个元素当前是否正在悬停,或者在页面加载时是否有某个类,然后在页面准备就绪时执行操作,具体取决于是否该类存在或元素当前正在盘旋?
答案 0 :(得分:3)
您正在传递它,但window.onload
通常在document.ready
之后触发,这就是为什么它没有被更改。
来自ready
的文档虽然JavaScript在呈现页面时提供了执行代码的
window.onload
事件,但在完全接收到所有资产(如图像)之前,此事件不会被触发。在大多数情况下,只要完全构建DOM层次结构,脚本就可以运行。
var globalVariable = 'somevalue'; // executes first, sets the variable
$(window).load(function() { // executes last, when all assets are loaded
globalVariable = 'aaa';
});
$(document).ready(function() { // executes second, alerts 'somevalue'
alert(globalVariable);
});
我需要在文档加载时计算具有某个类的元素数,然后在页面准备好后,使用该值来发布操作。
看起来你应该真正需要的是
$(function() {
var number_of_elements = $('.class').length;
});
没有必要等待window.onload
计算元素。
如何检测元素当前是否正在悬停,或者在页面加载时是否具有某个类,然后在页面准备就绪时执行操作,具体取决于类是否存在或元素当前是否存在徘徊过来?
$(function() {
$(document).on('mousemove', function(e) {
if ( $(e.target).is('.someClass') && $('.some_other_class').length ) {
// do stuff
}
// remember to remove this handler once done
});
});
我认为这与你得到的一样接近,因为你只能在鼠标移动后捕捉悬停的元素。
这将检查:
e.target
匹配某些内容,在本例中为类.some_other_class
的元素答案 1 :(得分:1)
$(document).ready
等待所有元素在触发之前放在DOM上。
$(window).load
等待所有元素都加载到DOM中(图像完成加载)。
因此,文档就绪方法将始终在窗口加载之前触发,因为元素被放置在树中然后它们被加载