2011-11-01 3 views
-2

콜백 함수에서 매개 변수 "url"을 다시 검색하려면 어떻게해야합니까?콜백 자바 스크립트 함수에서 정의한 매개 변수의 값을 가져옵니다.

기능은 전역 범위에서 선언 :

var showPrompt = function(text, callBackFunc){ 
    $('#msg').html(text); 
    $('#msgbtn').click(function(){callBackFunc();}) 
}; 

// 함수를 호출

$('li').click(function(){ // about 100 li el. 
    var url = '/prod/' + $(this).data('id'); 
    showPrompt('Page will be redirected', function(url){ 
     window.location = url; 
    }) 
}) 
+0

- OR을 문제? – jmav

답변

1
showPrompt = function(text, callBackFunc, args){ 
    $('#msg').html(text); 
    $('#msgbtn').click(function(){callBackFunc(args);}) 
}; 
//calling function 

$('li').click(function(){ // about 100 li el. 
    var url = '/prod/' + $(this).attr('id'); 
    showPrompt('Page will be redirected', function(args){ 
     alert(args.url); 
    }, {'url':url}) 
}) 

사용이 방법 (청소기 방식)

'을 통과 - 왜 투표를 다운

showPrompt = function(text, callBackFunc){ 
    $('#msg').html(text); 
    $('#msgbtn').click(callBackFunc); 
}; 
//calling function 

$('li').click(function(){ // about 100 li el. 
    var url = '/prod/' + $(this).attr('id'); 
    showPrompt('Page will be redirected', function(){ 
     alert(url); 
    }) 
}) 
+0

하지만 여전히 전달 된 익명 함수 URL 매개 변수를 다시 사용하는 방법을 알고 있습니까? – jmav

+0

질문을 이해할 수 없습니다. – hungryMind

1

함수에 매개 변수로 url를 선언하지 말고 당신이 원하는 외부 url를 얻을 수 있습니다 :

var url = ('error.html'); 
showPrompt('Page will be redirected', function() { 
    window.location = url; 
}); 

그리고 추가로 ano가 필요하지 않습니다. nymous 기능은 showPrompt 내부, 그냥이 괜찮 :

showPrompt = function(text, callBackFunc) { 
    $('#msg').html(text); 
    $('#msgbtn').click(callBackFunc); 
}; 

물론하지 않는 한 당신은 항상 인수없이 callBackFunc를 호출 할 경우. 첨부로

.click(callBackFunc) 

의미는 이벤트를 인수로 호출한다는 의미입니다.

+0

문제는 showPrompt 콜백 함수에 url 매개 변수를 전달하고 싶습니다. 전역 네임 스페이스에서이를 선언하고 싶지 않습니다. – jmav

+0

@jmav :'showPrompt' 호출이 다른 함수 안에 있다면'url'은 그 함수의 지역 변수가 될 것이지만 클로저에 의해서도 캡쳐 될 것입니다; 그래서, 글로벌 필요가 없습니다. –

+0

사실 : 사용자가 훨씬 나중에 클릭하는 버튼을 사용하면 어떨까요? 코드는 어떤 문맥인지 알지 못하기 때문에 url 값을 알지 못합니다. – jmav

0
showPrompt = function(text, callBackFunc) { 
    var url = ('error.html'); 
    $('#msg').html(text); 
    $('#msgbtn').click(function(){callBackFunc(url);}) 
}; 

//calling function 
showPrompt('Page will be redirected', function(url){ 
    window.location = url; 
}) 

이렇게 할 수 있습니다. 다만하여 callbackFunc 호출 기능의 폐쇄에 URL을 선언하고 매개 변수로

+0

슬픈 것처럼 showPrompt 콜백 함수에 url 매개 변수를 전달하려고합니다. – jmav

+0

그의 솔루션은 url 매개 변수를 전달합니다. . 나는 당신이 성취하고자하는 것을 정확히 설명해야한다고 생각합니다. – erturne

관련 문제