2012-03-14 5 views
0

일부 열기 및 닫기 메뉴에 대한 변수 설정에 문제가 있습니다. 다른 클릭 기능이 열려 다른 메뉴를 닫을 때 쿼리 할 수있는 변수가 있어야하므로 토글을 사용할 수 없습니다.jQuery 클릭 함수 내에서 JS 변수 설정

왜 다음 코드가 작동하지 않는지 이해가 가지 않습니다. 제발 누군가가 내가 꽤 이해할 수없는 조언을 할 수, 변수 범위를 이해하지만, jQuery는 클릭 기능을하는 방법은 나를 혼란스럽게 생각합니다. 또는 아마도 이런 종류의 기능을 위해 따라야 할 더 좋은 패턴이 있습니다.

var opentags = false; 

$('a#tags').click(function() { 

    if (opentags == true) { 
      $('nav#tags').slideUp(); 
      // and other stuff 
      var opentags = false; 
    } else { 
      $('nav#tags').slideDown(); 
      // and other other stuff 
      var opentags = true; 
    }}); 

미리 감사드립니다.

답변

2

var 키워드로 인해 함수에서 새 로컬 변수를 다시 선언하고 있습니다. 그걸 없애라.

또한, 부울 상수 부울 변수를 비교하는 이유가 없습니다 : 또한

if (opentags) { 
    $('#tags').slideUp(); 
    opentags = false; 
    } 
    else { 
    $('#tags').slideDown(); 
    opentags = true; 
    } 

참고하면 선택기에서 "탐색"하지 않아도은; 어쨌든 "id"값은 페이지에서 고유해야합니다.

var을 사용하는 것은 일반적으로 매우 중요한 일이므로 당연히 나쁜 생각입니다. 이 경우 함수 범위 밖에 선언 된 변수에 액세스하려면 이 필요합니다.

+0

선언 할 때 var를 사용하지는 않았지만 최근에 시작 했으므로 이제 완전히 이해합니다. 감사. – iiz

0

var opentags은 해당 콜백 내부에만 존재하는 새로운 로컬 변수를 만듭니다.
기존 전역 변수를 설정하려고합니다.