2013-01-10 81 views
0

我在页面上有一些html,而在我的头上我有$("#someelement").click(alert("click"));。无论#someelement是否存在,当我由于某种原因加载页面警报熄灭。但是,当我有$("#someelement").click(function(){alert("click")});时,它不会执行。这是为什么?在页面加载时执行的JQuery事件处理程序

+1

你包裹在$(文件)。就绪()? – Praveen

+0

好问题。我已经尝试过,没有这个,两种方法的结果都是一样的。 – Bluefire

+0

你能发表该代码吗? – Praveen

回答

2

alert("foo")将总是立即提醒foo,它不会返回可以作为事件处理程序传递的函数。相反,您需要将一个函数传递给jQuery事件绑定方法。

$("#someelement").click(function(){ 
    alert("click"); 
}); 

此外,如果这个代码是在<head></head>,它需要被包裹在$(document).ready()

$(document).ready(function(){ 
    $("#someelement").click(function(){ 
     alert("click"); 
    }); 
}); 

alertwindow对象上定义的方法,例如,window.alert。它期望一个参数是一个字符串,并且它必须是窗口对象的成员。在alert之后放置("string"),如alert("string")将执行该功能,导致弹出窗口为"string"。当您将alert("string")作为参数添加到函数时会发生同样的事情,当所述代码运行时会出现弹出窗口。

+0

谢谢。出于兴趣,这是怎么回事? – Bluefire

+0

因为alert(“Foo”)'不返回函数。 '$ .fn.click()'需要一个函数作为第一个参数传递。这正是JavaScript的工作原理。 –

0

试试这个:

$(document).ready(function() { 
    $("#someelement").click(function(){alert("click")}); 
}); 

这里是一个工作Fiddle

相关问题