如何为DOM元素注册事件处理程序

How to register event handlers for a DOM element

本文关键字:注册 事件处理 程序 元素 DOM      更新时间:2023-09-26

请帮帮我。如何在主干中注册DOM元素的事件处理程序?

        <p id="init">init</p>
        <script>
$(function () {
   function Config(){
       this.el=document.getElementById('init');
   }
   var config=new Config;

_.extend(config, Backbone.Events);

function fn(){
    console.log('hello');
}
config.el.on('click',fn);
});

我在代码中得到一个错误:

TypeError:config.el.on不是函数

Backbone也有类似jquery的方法http://backbonejs.org/#Events-在上

Backbone.Events是一个模块,它使对象能够绑定和触发自定义命名事件。

例如

_.extend(config,Backbone.Events);
config.on("MY_EVENT",function(msg){
    console.log("Event parameter: "+msg);
});
config.trigger("MY_EVENT","MSG"); 

所以,如果您想注册DOM点击事件,也许您应该在对象构造函数中以JS或jQuery的方式注册事件处理程序。

$(function(){
    function Config(){
        this.el = document.getElementById("test");
        $(this.el).on("click",fn);   //jQuery way
        this.el.addEventListener("click", fn, false);  //js way
    }
    var config = new Config;
    _.extend(config,Backbone.Events);
    function fn(){
        alert("hello");
    }
});

config.el正在引用DOM元素。如果您试图调用jQuery方法(on()),则需要将该DOM引用转换为jQuery对象:

$(config.el).on('click',fn);

检查此JSFiddle

或者没有jQuery

config.el.onclick = fn;

另一个JSFiddle