在jquery单击事件中调用函数

时间:2012-12-04 20:22:28

标签: jquery

我试图用jQuery调用click事件中的函数,但是在调用函数时jQuery返回undefined。这样做的正确方法是什么?

$(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调用有什么问题?

4 个答案:

答案 0 :(得分:3)

问题是check是一个异步事件。您需要使用回调而不是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);
            }
        }
    });
});

答案 1 :(得分:2)

我想你想要这个:

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

然后,您可以在Javascript代码中的任何位置调用check。

让我补充一点,我认为这种方式最好,因为我不喜欢使用函数指针,除非有理由。在这种情况下似乎没有。

答案 2 :(得分:0)

尝试在var

之前添加check
var check = function(param) {
 // do something
 return true;

}

答案 3 :(得分:0)

这是因为check需要在我认为的jquery点击事件之上声明。试试这个:

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

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