每次运行此代码时,如果不点击2个div,则会调用doSomething和doSomething 2函数。有人可以解释原因吗。
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");
}
答案 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
,然后使用其返回值作为将来发生点击事件时要执行的操作。”