2012-03-02 4 views
2

У меня есть очень простой фрагмент кода и действительно (возможно) простое изменение, которое мне нужно сделать.Область переменной JavaScript/jQuery, вызывающая ошибки

Я не могу получить доступ к переменной, что мне нужно в моем JQuery сценария:

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; 
    }); 
} 

При попытке изменить значение Objects.moveMe ни к чему, мой браузер стонет, что объекты не установлен. (Error: Objects is undefined).

Как я могу сделать это так, чтобы я мог использовать переменные в и из функций на всем моем скрипте?


Update:

Ошибка вызвана линии

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

где первая попытка использовать переменную.

+0

Заметим, что '$ (Object.moveMe) 'в основном делает' $ ($ (this)) ', что является излишним. – pimvdb

+0

Я не уверен, но я думаю, вам нужно использовать var Objects = new Object; – tildy

+0

@pimvdb Он будет использоваться в других функциях, поэтому он необходим. Пример, приведенный выше, - это просто описание проблемы, с которой я столкнулся. – Alex

ответ

2

Это не проблема с объемом. Проблема в том, что, как говорится в ошибке, Objects - undefined. Похоже, что вы хотите установить свойство его, поэтому инициализировать его как литерал объекта:

var Objects = {}; 

В настоящее время, что вы пытаетесь сделать, это эффективно:

undefined.moveMe = $(this); 

Когда вы объявляете переменную , его значение равно undefined, пока вы не присвоите ему другое значение. Назначив ему пустой литерал объекта, вы можете установить свойства этого объекта.

+0

Красивая! Благодарю. – Alex

+0

Без проблем, рад, что я мог бы помочь :) –

3

попробовать: http://jsbin.com/ocodoz/

var a; 
alert(a); 

a === undefined Но объявленный в текущей области ..

Ваш объект должны быть установлены на объект

var Objects = {}; 
Смежные вопросы