我试图用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调用有什么问题?
答案 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 }
});