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

时间:2013-08-02 08:56:03

标签: javascript backbone.js

请帮帮我。 如何为骨干网中的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-on

的方法

2 个答案:

答案 0 :(得分:1)

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

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

选中此JSFiddle

或没有jQuery

config.el.onclick = fn;

另一个JSFiddle

答案 1 :(得分:1)

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

如,

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

因此,如果你想注册DOM click事件,你可能应该在你的对象构造函数中以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");
    }

});