javascript - 如何将函数附加到事件

标签 javascript dom-events

    // param {name:'name', click : function(ev[,arg1, arg2] ){}, focus:function(ev[,arg1, arg2] ){} }
    ToggleButton = function(params) {
         var btn = document.getElementId(params.name);
         // how to hook the above click function passed using 
         // params and pass additional params along with it like function(ev[,arg1,arg2]) 
         btn.onclick = params.click;
    }

我正在尝试实现扩展链接按钮以充当切换按钮。现在我希望能够按照上面指定的方式附加事件,但我不知道如何将其附加到按钮以便我可以享受如下代码?

new ToggleButton({name: 'toggle1', "click" :  function(evt, obj1, obj1){ 
        //function body 
    }
});

最佳答案

我会这样做:

<a href="foo.html" id="toggle1">Toogle</a>


var ToggleButton = function(params) {
    var btn  = document.getElementById(params.id);
    var evt  = 'on' + params.evt;
    btn[evt] = params.action;    
    return;
}

ToggleButton({
    id:      'toggle1',
    evt:     'click',
    action:  function(evt){
        var clickedElement = this;
        alert('My href is '+ clickedElement.getAttribute('href'));

        // Prevent the browser from following the href, 
        // just in case you set this attribute
        var e = evt || window.event;
        e.preventDefault();
    }
});

关于javascript - 如何将函数附加到事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4944004/

相关文章:

javascript - 为什么 event.ctrlKey 返回 undef?

javascript - wrapper.instance() 上的 react 测试失败

JavaScript 绑定(bind)

javascript - Bootstrap工具提示的使用

javascript - 循环进入包含对象的可观察数组错误: Cannot find a differ supporting object '[object Object]'

javascript - 使用 html 输入文件多个选择文件后的事件

javascript - 打开弹出窗口并在关闭弹出窗口时刷新父页面

javascript - 需要制作网络表单来保存任何更改,即使不点击 "SEND"

Javascript 跨浏览器脚本

javascript - 如何配置 Bamboo 来运行 Protractor 测试用例