2012-11-22 2 views
0

이 코드에서 ok 변수에 액세스 할 수 없습니다. 글로벌 액세스를 위해이 변수를 설정하는 방법을jquery의 전역 함수

$('#Btn1').click(function(){ 
var ok=true; 
}); 
$('#Btn2').click(function(){ 
if (ok) alert('ok'); 
}) 

답변

2

var를 제거하고 대신 외부 범위의 변수를 선언 :

var ok = false; 
$('#Btn1').click(function() { 
    ok = true; 
}); 
$('#Btn2').click(function() { 
    if(ok) alert('ok'); 
}); 

var를 제거하면 변수 지구를 만들기에 충분 될 것이지만, 그것은 많은입니다 가능한 한 가장 작은 범위에 로컬로 유지하는 것이 좋습니다.이 경우에는 두 가지 기능을 포함하는 범위입니다. 문서 준비 콜백 함수에서 코드를 래핑 한 것이므로 전역 범위가 아닌 해당 함수의 범위가됩니다.

ok = true; 

그러나, 더 나은 스타일이 변수 어딘가를 선언하는 것입니다 :

0

그냥 자바 스크립트에서 전역 함수를 만들려면 핸들러

var ok=false; 
$('#Btn1').click(function(){ 
    ok =true; 
}); 
$('#Btn2').click(function(){ 
if (ok) alert('ok'); 
}) 
0

외부에서 확인 변수를 선언, 당신은 VAR을 생략 두 함수의 범위는 있지만 네임 스페이스 오염을 피하기 위해 네임 스페이스 오염을 피하기 위해 이름 공간 공백을 피할 수 있습니다.

function() { 
    var ok = false; 
    $('#Btn1').click(function(){ 
     ok=true; 
    }); 
    $('#Btn2').click(function(){ 
     if (ok) alert('ok'); 
    }); 
} 

0

전역 변수를 사용하는 것이 좋지만 첫 번째 버튼이 클릭되었는지 여부 만 알면 더 나은 (더 많은 jQuery-ish) 방법이 해당 데이터를 저장하는 것입니다. 버튼 자체의 일부로 jQuery .data() 메소드를 사용합니다.

은 다른 버튼을 클릭하면 그 값을 확인, 당신도 버튼을 클릭 한 횟수를 저장할 수는 훨씬 더 유연하게하려면,

$('#Btn1').click(function(){ 
    $(this).data("click_count", (parseInt($(this).data("click_count")) || 0) + 1); 
}); 

$('#Btn2').click(function(){ 
    var clickCount = (parseInt($('#Btn1').data("click_count")) || 0); 
    if (clickCount > 0) { 
     alert("clicked at least once"); 
    } 
})​ 

Live test case합니다.

0

이 시도 :

// this is a global variable 
var isValidGlobal = false; 

$(function() { 
    // since this is global, i can alert it here 
    alert(isValidGlobal); 

    $('#Btn1').click(function() { 
     // Set the global variable 
     isValidGlobal = true; 
     return false; 
    }); 

    $('#Btn2').click(function() { 

     if (isValidGlobal) alert('global variable'); 
     return false; 
    }); 
});​ 

DEMO