Javascript 为什么我的点击处理程序可以在文档上运行?
好的,我已经为div单击设置了一个处理程序,但出于某种原因,它会在Javascript 为什么我的点击处理程序可以在文档上运行?,javascript,jquery,Javascript,Jquery,好的,我已经为div单击设置了一个处理程序,但出于某种原因,它会在document.ready上触发,我真的不知道为什么。这是我的密码: function statusCallback(status){ //THIS IS THE JSONP CALLBACK RECEIVED FROM THE SERVER if(status.title==null){ $('#core').attr('class','play'); $('#button').
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());
});
更改:
$('#button').click(initialBinder());
致:
前者将实际调用函数,而不是返回指向它的函数指针
也许这段代码可以澄清其中的区别:
function foo(x,y)//我是function foo,我像boss一样添加两个数字
{
返回x+y;
};
var x=foo(1,1)//x是2,因为我们调用了函数
变量y=foo//y是对函数foo的引用,没有括号
var z=y(1,1)//z是2,因为我们通过引用y调用了foo
document.write('x='+x+'
z='+z)代码>
您没有将函数作为回调引用,而是调用函数。请尝试从bind语句中删除paren,如下所示:
$(document).ready(function(event){
$('#button').click(initialBinder);
});
发生的情况是函数正在执行,而不是作为参数传递。成功了!我从来不知道。谢谢@泰格里尔-是的,我当时正在拼命打字!:)
$('#button').click(initialBinder);
$(document).ready(function(event){
$('#button').click(initialBinder);
});