2012-08-24 2 views
1

클릭시 하위 함수에서 상위 함수를 반환하려면 어떻게해야합니까? 예제 코드는 다음과 같습니다.클릭시 하위 함수에서 상위 함수 반환

function returnFunction() { 

    var output = false; 

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

     output = true; 

    }); 

    return output;  

} 

var result = returnFunction(); 

결과는 항상 코드가 실행될 때 클릭이 발생하지 않았기 때문에 false입니다. 어떻게하면이 일을 할 수 있습니까?

내 의도는 팝업 대화 상자를 호출하는 것이며, 모든 논리를 쉽게로드 할 수있는 하나의 함수 (Confirm 대화 상자의 클릭 이벤트 포함)에 넣고 싶습니다.

는 다른 곳에 스크립트에서 나는 예를 들어 이런 식으로 호출하는 것 :

// Menu click triggers the dialog 
$('a').click(function(e) { 
    // The function displays the dialog and returns the click events of the dialog 
    var result = returnFunction(); 
    // If result was false, we'll prevent the menu access, for example 
    if (!result) { 
     e.preventDefault(); 
    } 
}); 

내가 jQuery를 UI 대화 플러그인 알고 있어요. 하지만 지금은없이 이것을 달성하고 싶습니다.

감사합니다.

+3

* "이 작업을 어떻게 할 수 있습니까?"* 할 수 없습니다. 미래에만 설정 될 수있는 가치를 어떻게 얻을 수 있습니까? 나는 당신의 문제 묘사를 이해하는지 잘 모르겠습니다. 대화 상자를 설정하는 모든 로직을 갖고 싶다면 왜 값을 반환해야합니까? –

+0

당신이 뭔가 다른 모든 것을 함께하려고 시도하는 것처럼 보입니다. –

+0

답장을 보내 주셔서 감사합니다. 맞아, 그건 내가 두려워했던거야. 그렇다면 다시, 나는 객체 지향적 인 js 나 모듈 기반의 구조에 너무 익숙하지 않다.하지만 함수를 객체로 래핑함으로써 이것을 얻을 수있을 것이다. 나는 물체가 단순히 서로에 대한 참조임을 이해했으며, 심지어 나중에 이벤트가 이전에 선언 된 것들을 바꿀 것입니다. 이걸로 완전히 잃어 버렸나요? – Dusty

답변

2

는 단순화되어 그이다

모든 자바 스크립트를 실행하는 동안 (스크롤 등의 하이퍼 링크를 클릭) 멈춘다. 즉, 누군가가 링크를 클릭하기 전까지는 스크립트를 "일시 중지"할 수 없습니다.

이 문제를 해결하는 일반적인 방법은 콜백 함수입니다 :

function my_callback(some, arguments) { 
    // you can do whatever in here: an ajax load, set a global variable, change some of the page, ... 
    console.log(some, arguments); 
    alert(some + " " + arguments); 
} 

function returnFunction(callback, param) { 
    var output = false; 
    $('a').click(function() { 
     callback(param, "world"); 
    }); 
} 

returnFunction(my_callback, "hello"); 

데모

http://jsfiddle.net/UnBj5/에서 편집 :

나는 그들이 옵션이기 때문에 글로벌 변수를 언급했다, 그러나 전형적으로 나쁜 스타일. 가능한 경우 다른 방법을 사용하십시오.

더 많은 도움이 필요하면 수행하려는 작업에 대한 자세한 정보를 제공하십시오.

+0

나는 약간의 어쩌면 거기서 길을 잃었다는 것을 깨달았다. 답변 해주셔서 감사합니다. – Dusty

0

대신 매개 변수를 사용해보십시오. 경고 상자를 표시하고 매개 변수에 따라 다른 팝업 알림을 표시하는 함수에 매개 변수를 보내십시오. 기본적으로 닭고기 달걀 문제로 인해 사용자가하려는 것은 작동하지 않습니다.