2012-03-02 2 views
2

코드의 간단한 스 니펫과 실제로 필요한 간단한 변경 사항이 있습니다.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

+0

잘 모르겠지만 var 객체를 사용해야한다고 생각합니다. Objects = new Object; – tildy

+0

@pimvdb 다른 기능에 익숙해 져서 필요한 이유가 있습니다. 위의 예는 내가 가지고있는 문제점을 간단히 설명하기위한 것입니다. – Alex

답변

2

범위 문제는 아닙니다. 문제는 오류 메시지에 Objectsundefined 인 것입니다. 현재

var Objects = {}; 

, 당신이 뭘 하려는지 효율적입니다 : 당신이 그것의 속성을 설정, 그래서 객체 리터럴로 초기화 할 것 같습니다

undefined.moveMe = $(this); 

변수를 선언하고 다른 값을 지정할 때까지 그 값은 undefined입니다. 빈 객체 리터럴을 할당하면 해당 객체의 속성을 설정할 수 있습니다.

+0

아름다운! 감사. – Alex

+0

문제 없습니다. 다행입니다. :) –

관련 문제