无需点击即可调用函数

时间:2013-12-01 11:14:20

标签: javascript jquery

每次运行此代码时,如果不点击2个div,则会调用doSomething和doSomething 2函数。有人可以解释原因吗。

http://jsfiddle.net/JuKmM/5/

function doSomething2(){
 console.log("div 1 clicked");
}

//var element1=document.getElementById('div_1');
//var element2=document.getElementById('div_2');
//element1.addEventListener('click',doSomething2,false);
//element2.addEventListener('click',doSomething,true);

$("#div_1").click(doSomething2());
$("#div_2").click(doSomething());
function doSomething(){
console.log("div2 clicked");
}

3 个答案:

答案 0 :(得分:1)

您通过在末尾添加()来调用该函数。对于click()方法,您需要传递处理函数引用,如下所示

$("#div_1").click(doSomething2);
$("#div_2").click(doSomething);

答案 1 :(得分:1)

您正在呼叫function而不是传递其reference

试试这个,

$("#div_1").click(doSomething2);
$("#div_2").click(doSomething);

小提琴:DEMO

答案 2 :(得分:0)

你应该改用:

$("#div_1").click(doSomething2);
$("#div_2").click(doSomething);

$(...).click(doSomething)表示“将来发生点击事件时调用函数doSomething

$(...).click(doSomething())表示“立即调用函数doSomething,然后使用其返回值作为将来发生点击事件时要执行的操作。”