JavaScript/jQuery变量范围导致错误

问题描述:

我有一个非常简单的代码片段和一个真正(可能)简单的更改,我需要做的。JavaScript/jQuery变量范围导致错误

我无法访问一个变量,我需要在我的jQuery脚本:当我尝试的Objects.moveMe值更改为任何

var Objects; // Used to store stuff 
enable_reordering(); 

function enable_reordering() 
{ 
    $('a.move-object').click(function(){ 

      Objects.moveMe = $(this); 
      $('#image-title').text($(Objects.moveMe).attr('data-child-title')); 
      return false; 
    }); 
} 

,我的浏览器是呻吟对象未设置。 (Error: Objects is undefined)。

我该如何做到这一点,以便我可以在整个脚本中使用变量内外的函数?


更新:

错误是由行

$('#image-title').text($(Objects.moveMe).attr('data-child-title')); 

我第一次尝试使用这个变量引起的。

+0

需要注意的是'$(Object.moveMe )'基本上在做'$($(this))',这是多余的。 – pimvdb 2012-03-02 18:12:47

+0

我不确定,但我认为你需要使用var Objects = new Object; – tildy 2012-03-02 18:15:15

+0

@pimvdb它将被用于其他功能,这就是为什么它需要。上面的例子只是概述我遇到的问题。 – Alex 2012-03-02 18:19:54

这不是范围问题。问题是,如错误所述,Objectsundefined。它看起来像你想设置的一个属性,所以将其初始化为对象文本:

var Objects = {}; 

目前,你正在尝试做的是有效的:

undefined.moveMe = $(this); 

当你声明一个变量,它的值是undefined,直到您为其分配其他值。通过为它分配一个空的对象文字,您可以设置该对象的属性。

+0

美丽!谢谢。 – Alex 2012-03-02 18:14:01

+0

没问题,很高兴我能帮忙:) – 2012-03-02 18:16:18

尝试:http://jsbin.com/ocodoz/

var a; 
alert(a); 

a === undefined但在当前范围内声明..

你的对象已经被设置为对象

var Objects = {};