jQuery事件触发文档就绪
问题描述:
我想设置我的窗体上的按钮的单击事件,出于某种原因,我越来越奇怪的行为。当我将click事件绑定到一个不带参数的函数时,事情似乎很好。但是当我将事件绑定到一个带有参数的函数时,事件就会在文档准备好并单击时触发。有任何想法吗?jQuery事件触发文档就绪
例1:
这将导致一个警告对话框开火准备,并单击按钮时。
jQuery(document).ready(function(){
$('myButton').click(alert('foo'));
});
例2:
这将导致一个警告框,火ONLY按钮被按下时。
jQuery(document).ready(function(){
$('myButton').click(wrapper);
});
// External js file
function wrapper(){
alert('bar');
}
答
你需要一个anonymous function (read this for more complete explanation),像这样:
jQuery(function() {
$('myButton').click(function() {
alert('foo');
});
});
单击处理需要一个功能,会发生什么内部的功能是你的,但它不能通过事件... JavaScript的只是没有按这样工作。当你用匿名函数包装你的代码时,整个事情都会执行,而不管内部的函数或参数。
答
$('myButton').click(alert('foo'));
调用alert('foo')
(弹出一个警告),然后结合的Click事件到alert
返回值(这是不一回事警报)。你可能会想使用匿名函数,就像Nick所建议的那样。
答
jQuery(document).ready(function(){
$('myButton').click(function(){
wrapper();
});
});
答
这是一个古典错误。你所做的实际上是在click事件监听器中给出返回值,而不是javascript函数对象。
如果你坚持使用上的方法,你就必须使用eval(这是最好不要使用)
你的下方法工作,和匿名函数工作了。
答
包装是一种功能,而警报是Window对象的一个方法...
HTH
高雅的downvote非常有意义。 – Gabe 2013-05-20 20:25:50