2012-12-04 7 views
1

click 이벤트에서 jQuery로 함수를 호출하려고하는데 jQuery는 함수 호출시 undefined을 반환합니다. 이 작업을 수행하는 올바른 방법은 무엇입니까? 나는 아약스 호출 인 check() 내부의 코드를 추가 한 : 당신이 console.log(valid)을 할 경우jquery 클릭 이벤트 내에서 함수 호출하기

$(document).ready(function() { 
    $('#my_button').click(function() { 
     var valid = check(something); 
     if (valid) { // do something } 
    }); 

    check = function(param) { 
    .ajax { 
     // ajax params 
     success: function(data) { 
      if (data) 
       return true; 
     } 
    } 
    } 
}); 

, UPDATE

undefined로 반환됩니다. 그게 문제인 것처럼 보입니다. 방금 alert() 체크를하면 모든 것이 작동합니다. 아약스 전화가 뭐가 잘못 되었나요? 추가

+0

http://jsfiddle.net/mowglisanu/ZQxRv/를 재현 할 수 없습니다가, 어쩌면 당신은 주석 코드를 표시해야합니다. – Musa

+0

뭔가 정의되지 않았기 때문일 수 있습니까? ;-) – leon

+0

내가 뭘하려고하는지 명확하게하기 위해 질문을 업데이트했습니다. – RHPT

답변

3

문제는 비동기 이벤트입니다. 대신 return 문의 콜백을 사용할 필요가 :

$(document).ready(function() { 
    $('#my_button').click(function() { 
     check(something, function (valid) { 
     if (valid) { // do something } 
     }); 
    }); 

    check = function(param, callback) { 
    $.ajax({ 
     // ajax params 
     success: function(data) { 
      if (data){ 
       return callback(true); 
      } 
      else { 
       return callback(false); 
      } 
     } 
    }); 
}); 
+0

으. 신기한 실수. – RHPT

0

시도 var}

var check = function(param) { 
// do something 
return true; 

check 전에 check 필요가 내가 생각 JQuery와 클릭 이벤트 위에서 언급 될 수 있기 때문이다

0

. 이 시도 :

var check = function(param) { 
// do something 
return true; 
} 

$('#my_button').click(function() { 
    var valid = check(something); 
    if (valid) { // do something } 
}); 
2

을 당신이 원하는 생각 :

function check(param) 
{ 
    //do something 
    return true; 
} 

하는 그런 당신이 당신의 자바 스크립트 코드에서 어디에서 확인 호출 할 수 있습니다.

이유가없는 한 함수 포인터를 사용하는 것이 좋지 않기 때문에이 방법이 최선이라고 생각합니다. 이 경우에는 하나도 보이지 않습니다.