1

我正在尝试click使用 jQuery 在事件中调用一个函数,但是 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;
         }
     }
   }
});

如果您执行 a console.log(valid),则返回为undefined

更新:我在里面添加了代码check(),这是一个 ajax 调用。这似乎是问题所在。如果我只是进行alert()内部检查,那么一切正常。那么ajax调用有什么问题呢?

4

4 回答 4

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);
            }
        }
    });
});
于 2012-12-05T00:34:12.130 回答
2

我想你想要这个:

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

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

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

于 2012-12-04T20:25:03.553 回答
0

尝试添加var之前check

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

}

于 2012-12-04T20:24:45.590 回答
0

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

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

$('#my_button').click(function() {
  var valid = check(something);
  if (valid) { // do something }
});
于 2012-12-04T20:25:02.197 回答