日期:2014-05-16  浏览次数:20358 次

我的一个网页上有3个按钮都要用到同一个事件,请问怎么避免重复写事件?
本帖最后由 whoamiwho 于 2014-03-29 23:19:07 编辑
如题,我的网页上有btn1,btn2,btn3三个按钮,都是要调用一个函数calculate(),请问有哪些方法可以避免重复写3次?
下面的3个写法怎么感觉执行结果不一样的?

第一种:直接写3次,麻烦:
 $("#btn1").click(function(){
    alert('a');
    });
 $("#btn2").click(function(){
    alert('a');
    });
 $("#btn3").click(function(){
    alert('a');
    });
第二种,写一个函数调用,会报错:
function calculate(){
    alert('a');
    };
$("#btn1").click(calculate());
$("#btn2").click(calculate());
$("#btn3").click(calculate());
第三种,通过addEventListener()监听事件,我是在document的load事件里面写的,怎么感觉已进入页面就执行了一次,而不是点击的时候去执行的?
function calculate(){
    alert('a');
    };
$(function () {
document.getElementById("btn1").addEventListener("click", calculate(), false);
document.getElementById("btn2").addEventListener("click",  calculate(), false);
document.getElementById("btn3").addEventListener("click",  calculate(), false);
});



------解决方案--------------------

document.getElementById("btn1").addEventListener("click", calculate(), false);
改成

document.getElementById("btn1").addEventListener("click", calculate, false);
第二种也一样