2014-03-01 2 views
0

jquery 메서드 .on() 내부에서 전역 변수를 업데이트하려고하는데이 전역 변수를 덮어 쓸 전역 범위에이 업데이트 된 값을 반환하는 방법을 알 수 없습니다. 문제는 .on() 메서드가 .each() 메서드 내부에 있다는 것입니다. 따라서 두 가지 콜백 함수가 있습니다. 아래 예제 코드 :두 중첩 jquery 메서드에서 반환 값은 어떻게됩니까?

var globalValue = 0; 

$('.container').each(function() { 
    $(this).on('mousemove', function() { 
    globalValue = 1; 
    return globalValue; 
    }); 
    return globalValue; 
}); 
console.log(globalValue); // prints 0 

답변

0

이벤트 핸들러에서 가져온 값을 반환 할 수 없습니다. 이벤트 핸들러는 나중에 언젠가 발생하고 호출 될 때 시스템에 의해 호출되므로 값을 반환하면 jQuery로 들어가고 시스템으로 돌아갑니다.

이벤트 핸들러에서 전역 변수를 설정할 수 있습니다. 그러나 그것은 일반적으로 원하는 솔루션이 아닙니다. 일반적으로 이벤트 핸들러에서 항목을 계산하면 이벤트 핸들러에서 바로 사용하거나 다른 함수를 호출하고 계산 된 변수를 다른 함수로 전달합니다.

참고 : .on() 메서드는 $('.container')의 모든 DOM 요소에 자동으로 적용되므로 참고로 .each()은 필요하지 않습니다. 당신은이 작업을 수행 할 수 있습니다 :

var globalValue = 0; 

$('.container').on('mousemove', function() { 
    // set global variable 
    globalValue = 1; 
}); 

을하지만, 이것은 일반적으로 더 유용 조언을

$('.container').on('mousemove', function() { 
    var localValue = 1; 
    myfunction(localValue); 
}); 
+0

감사합니다. 나는 내 문제를 해결할 수 있었다. – mirox