我有这段代码:
jQuery(window).on('resize', fuction() {
var width = jQuery(this).innerWidth();
console.log(width) // works fine.
});
console.log(width); // undefined
有没有人知道如何在jQuery中解决这个全局变量问题?
答案 0 :(得分:0)
尝试在width
处理程序
resize
变量
var width = jQuery(window).on("resize", function() {
width = jQuery(this).innerWidth();
console.log("inside resize event", width) // works fine.
}).innerWidth();
console.log("outside resize event", width);// set to `.innerWidth()` initially
答案 1 :(得分:0)
这是一个基本的范围问题 - 在您的代码中,变量宽度仅在调整大小上定义,并且在此之前不可用。您需要在文档就绪上运行该函数才能访问它。最简单的方法是创建一个通用函数,首先在文档就绪时调用,然后在随后的调整大小事件上调用。
function width(){
var width = window.innerWidth();
console.log(width);
});
$(document).ready(function(){
width();
})
$(window).on('resize', function() {
width();
});
答案 2 :(得分:0)
这不是一个jQuery问题,这就是javascript的工作原理。您将width
声明为var
,它在本地范围内创建变量。如果删除var
,则不会声明新变量,而是在父作用域中查找一个变量,直到找到一个或直到您处于全局作用域,此时变量在全局作用域中创建。您可以使用window.width
答案 3 :(得分:0)
从宽度中移除var !!它将被视为全局变量,并将100%工作!!
答案 4 :(得分:0)
简单调整...在事件处理程序之外声明var
...并在声明事件处理程序后触发调整大小,以便在页面加载时设置变量值
var width;
jQuery(window).on('resize', fuction() {
width = jQuery(this).innerWidth();
}).resize();
console.log(width);