无法在jQuery中访问变量

时间:2016-06-26 05:07:08

标签: jquery

我有这段代码:

jQuery(window).on('resize', fuction() {
    var width = jQuery(this).innerWidth();
    console.log(width) // works fine.
});
console.log(width); // undefined

有没有人知道如何在jQuery中解决这个全局变量问题?

5 个答案:

答案 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

plnkr http://plnkr.co/edit/I9ueibR00JCDQtxy2p6D?p=preview

答案 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);