为什么我的点击处理程序已经在文档上运行了
Why is my click handler being run on document ready?
好吧,我已经为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());
});
更改:
$('#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);
$('#button').click(initialBinder);
您没有将函数引用为回调,而是调用了一个函数。
尝试从绑定语句中删除parens,如下所示:
$(document).ready(function(event){
$('#button').click(initialBinder);
});
实际情况是,函数正在被执行,而不是作为参数传递。
相关文章:
- 对couchdb数据库/视图中的所有文档运行脚本/查询
- 为什么不是'我的函数未按预期在文档加载时运行
- 当我尝试添加文本效果时,有东西阻止了JavaScript的运行'手风琴'在html文档中
- 如何将word文档中的值作为输入传递到javascript的文本框中,并在循环中运行它
- Javascript:如何在函数运行完成之前对文档进行更改
- 如何在 win.open 的文档内运行 onclick 函数
- 具有命名空间的文档上的 jQuery 事件未按预期运行
- 为什么在 React 中.js文档(“教程”部分)描述了运行服务器的必要性
- JSDOC 文档在模块内运行
- 在文档就绪上运行 PHP 函数
- 使用 jquery 在 django 文档准备就绪时运行代码
- 如何在IPython笔记本上运行带有WebGL画布的HTML5文档
- jQuery UI是否仅在HTML文档中运行?
- 如果我单击文档中的任何其他 HTML 控件,tabIndex 将无法正常运行
- 你能在文档之外的元素上运行execcommand吗
- 外部JavaScript未运行,不写入文档
- 如何让Greasemonkey脚本在文档开始时在@run运行,在文档结束时在@run运行
- Chrome扩展在文档启动时运行
- 为什么我的点击处理程序已经在文档上运行了
- 需要一个select标签来跨文档运行javascript