2016-06-22 2 views
0

두 가지 탐색 방법으로 간단한 아코디언 메뉴를 만듭니다. 스텝 내부 "다음/이전"버튼을 클릭하면, 단계 표제 둘 이상의 함수간에 변수 공유

  • 클릭하여

    1. .

    JSFiddle

    내 JS 코드는 다음과 같습니다

    $(document).ready(function(){ 
     
    
     
    // Click on TITLE 
     
    $(".step-title").click(function(){ 
     
        
     
        var this_title = $(this).parents(".step").children(".step-title"); 
     
        var this_content = $(this).parents(".step").children(".step-content"); 
     
        var that_title = $(".step-title"); 
     
        var that_content = $(".step-content"); 
     
        
     
        if (this_title.hasClass("active")) 
     
        { 
     
        this_title.removeClass("active"); 
     
        this_content.slideUp(200); 
     
    
     
        } else { 
     
        that_title.removeClass("active"); 
     
        this_title.addClass("active"); 
     
        that_content.slideUp(200); 
     
        this_content.slideDown(200); 
     
        } 
     
        }); 
     
        
     
    // Click on BUTTON 
     
    $(".save").click(function(){ 
     
        
     
        var this_title = $(this).parents(".step").children(".step-title"); 
     
        var this_content = $(this).parents(".step").children(".step-content"); 
     
        var that_title = $(".step-title"); 
     
        var that_content = $(".step-content"); 
     
        
     
        if (this_title.hasClass("active")) 
     
        { 
     
        that_title.addClass("active"); 
     
        this_title.removeClass("active"); 
     
        that_content.slideDown(200); 
     
        this_content.slideUp(200); 
     
        } 
     
    }); 
     
    
     
    });

    당신은 내가 따라서 두 기능의 루트에 같은 변수를 재사용하고 볼 수 있듯이 내 문제.

    ** 질문 ** 여러 변수에서 변수를 공유 할 수있는 방법이 있습니까?

    함수의 로컬 범위 밖으로 가져갈 때 작동하지 않습니다.

    도움 주셔서 감사합니다.

  • +0

    2 단어 : 가변 범위 : http://stackoverflow.com/questions/500431/what-is-the-scope-of-variables-in-javascript?rq=1 – Hazonko

    +0

    나는 그것을 읽었다. 다시 말하지만, 지역 범위를 활용하지 않으려 고 노력했습니다 –

    답변

    2

    여러 가지 방법이 있습니다.

    전역 변수는 Js에서 수행하는 나쁜 (심지어 엄격한 모드의 오류조차도) 것으로 간주되므로 그대로 두거나 인수를 사용하여 함수를 작성해야합니다 (함수의 일부만 트리거 함) . 당신은 정말 "글로벌"변수를 설정하려면

    , 당신은 변수의 이름 앞에 var을 ommit해야 :

    foo = bar 
    

    을 내가 말한 그러나, 그것은 엄격한 모드에서 오류로 간주됩니다, 다른 문제로 이어질 수 있습니다. 그것에 대해 갈 "더 깔끔한"방법은 윈도우 객체에 변수를 할당하는 것입니다.

    window.foo = bar 
    

    글로벌 변수와 마찬가지로 작고 가독성이 좋습니다.

    +0

    설명해 주셔서 감사합니다. 불행히도, 내가 찾고있는 것이 아닙니다. 나는 변수의 범위를 무용지물로 바꾸려고 노력했다. 나는 그것이 작동하지 않는 원인이되는 것은 나의 변수의 본질이라고 믿는다. –

    +0

    그러면 "this"를 인수로 사용하여 세 번째 함수를 선택해야할까요? 그러면 4 개의 객체가있는 배열이 반환됩니다. 그런 다음 각 함수에 대해 적절한 색인을 사용하여 해당 함수를 호출합니다. 그게 해결책일까요? – Carele