2012-12-04 80 views
1

我想用jQuery調用click事件中的函數,但是jQuery在調用該函數時返回undefined。什麼是正確的方法來做到這一點?在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; 
     } 
    } 
    } 
}); 

如果你做一個console.log(valid),則返回爲undefined

更新:我已經添加了代碼中check(),這是一個Ajax調用。這似乎是問題所在。如果我只是做一個alert()檢查,然後一切正常。那麼ajax調用有什麼問題?

+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

嘗試添加varcheck

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

}

0

那是因爲jQuery的單擊事件,我相信以上聲明check需求。試試這個:

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; 
} 

然後你就可以調用JavaScript代碼從哪裏檢查。

讓我補充一點,我認爲這種方式是最好的,因爲我不喜歡使用函數指針,除非有原因。在這種情況下似乎沒有一個。

相關問題