我觉得这是你在睡眠不足或咖啡太多之后遇到的问题之一......
我有一个元素
<a id="blah" href="#">somethinghere.com</a>
我定义了一个函数
function test(){
alert('hi');
};
我尝试将该函数作为点击处理程序(https://jsfiddle.net/8r1rcfuw/30/)附加:
$('#blah').on('click', test());
并加载页面,处理程序立即执行 - 没有任何点击。
但是当我只使用匿名函数作为处理程序(https://jsfiddle.net/8r1rcfuw/36/)时:
$('#blah').on('click', function(){
alert('hi');
});
一切正常
同时执行(https://jsfiddle.net/8r1rcfuw/39/):
$('#blah').on('click', function(){
test();
});
function test(){
alert('hi');
}
似乎工作正常 - 但似乎有点多余。
这感觉就像我以前做过1000次之前的事情 - 是什么给出的?
答案 0 :(得分:2)
事件处理程序必须是一个函数,并且您将函数的结果传递给它:
$('#blah').on('click', test());
与:
相同$('#blah').on('click', undefined); //As your funcion doesn't return anything
将其视为函数是一个值,您可以这样做:
var myFunction = function() {
alert("Hi");
}
或
function myFunction() {
alert("hi");
}
然后:
$('#blah').on('click', myFunction); //Without invocation!
或使用匿名函数:
$('#blah').on('click', function() {
alert("Hi");
});
答案 1 :(得分:0)
您还可以使用函数对象:
var temp=function test() {
alert('hi');
}
$('#blah').on('click', temp);
答案 2 :(得分:0)