2012-08-07 2 views
1

removeHighlight()이 완료되면 shwOpts.show("fast");을 작동 시키려면 어떻게해야합니까?콜백과 같은 기능을 수행하려면 어떻게해야합니까?

나는 익명 함수를 인자로 다른 인자에 넣으면 콜백으로 작용할 것이라고 생각했다. 이것은 작동하지 않았다. 당신의 typeof 컨트롤을 사용하여

removeHighlight : function(f) { 
    // remove previous highlight. 
    var highlight = $('#openid_highlight'); 
    if (highlight) { 
     highlight.replaceWith($('#openid_highlight a')[0]); 
     if(typeof f === 'function') { 
      f(); 
     } 
    } 
}, 


moreOptsLink = $("#more-options-link").click(function() { 
    moreOptsLink.detach(); 
    openid.removeHighlight(function(){ 
     $("#show-more-options").show("fast"); 
    }); 
    openid.setPref("showMoreOpenIdOptions", true); 
}); 

:

removeHighlight : function(f) { 
     // remove previous highlight. 
     var highlight = $('#openid_highlight'); 
     if (highlight) { 
      highlight.replaceWith($('#openid_highlight a')[0]); 
     } 
    }, 


moreOptsLink = $("#more-options-link").click(function() { 
       moreOptsLink.detach(); 
       openid.removeHighlight(function(){$("#show-more-options").show("fast");}); 
       //shwOpts.show("fast"); 
       openid.setPref("showMoreOpenIdOptions", !0) 
      }); 

답변

6

당신은 당신이 같은 removeHighlight 함수의 콜백을 호출 할 콜백 함수

removeHighlight : function(f) { 
    // remove previous highlight. 
    var highlight = $('#openid_highlight'); 
    if (highlight) { 
     highlight.replaceWith($('#openid_highlight a')[0]); 
    } 

    if (typeof(f) === "function") { 
     f(); 
    } 
}, 
+0

감사합니다. 내가 자동으로 수행했다고 생각했습니다. – Richard

+0

다른 함수의 본문에서 만들어진 익명의 함수에서 인수를 전달하면 더 재미있을 것입니다. – Richard

+0

@ 리차드 만약 당신이 맞다면 잘 모르겠지만 시도해볼 게 :) http://jsfiddle.net/WzjDx/ – Andreas

0
removeHighlight : function(f) { 
     // remove previous highlight. 
     var highlight = $('#openid_highlight'); 
     if (highlight) { 
      highlight.replaceWith($('#openid_highlight a')[0]); 
     } 
    //you need to call f 
     f() 

    }, 
1

을 실행하지 않는 함수에 매개 변수로 함수를 전달하지 않으면 오류가 발생하지 않습니다.

+0

작은 질문 : 표현은 무엇입니까? 0 다른 말로 표현하면 왜 1을 말하는 것이 아닙니다. – Richard

+0

그것은 진실을 거기서 쓰는 것과 같습니다. :) 나는 단지 질문에서 그것을 복사했고 코드의 해당 부분을 읽지 않았습니다. 단지 문제가있는 부분을 읽고 고쳤습니다. – sedran

+0

코드를 편집했습니다. 쓰기! 0은 불필요하므로 컴퓨터에 대한 추가 작업입니다. – sedran

관련 문제