好的,我已经为div点击设置了一个处理程序,但出于某种原因,它会在document.ready
上触发,我无法弄清楚原因。这是我的代码:
function statusCallback(status){
//THIS IS THE JSONP CALLBACK RECEIVED FROM THE SERVER
if(status.title==null){
$('#core').attr('class','play');
$('#button').animate({marginLeft:'350px'},2000,'easeOutCubic',function(){
$('#button').click(initialBinder());
});
}else{
}
}
function initialBinder(){
$('#button').unbind('click');
$('#core').attr('class','load');
$('#button').animate({marginLeft:'0px'},2000,'easeOutCubic',function(){
$.ajax({
url:'http://24.182.211.76/status.php',
crossDomain:true,
dataType:'jsonp'
});
});
}
$(document).ready(function(event){
$('#button').click(initialBinder());
});
答案 0 :(得分:10)
变化:
$('#button').click(initialBinder());
为:
$('#button').click(initialBinder);
前者实际上会调用函数,而不是返回一个函数指针。
也许这一点代码可以澄清差异:
function foo(x, y) //I'm function foo, I add two numbers like a boss
{
return x + y;
};
var x = foo(1,1); //x is 2 because we called the function
var y = foo; //y is a reference to function foo, no parentheses
var z = y(1,1); //z is 2 because we called foo through reference y
document.write('x = ' + x + '<br />z = ' + z);
答案 1 :(得分:2)
$('#button').click(initialBinder);
您没有将函数作为回调引用,而是调用函数。
答案 2 :(得分:0)
尝试从绑定语句中删除parens,如下所示:
$(document).ready(function(event){
$('#button').click(initialBinder);
});
正在发生的是该函数正在执行而不是作为参数传递。