0

请帮帮我。如何在主干中为 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);

});

我在代码中遇到错误:

类型错误:config.el.on 不是函数

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

4

2 回答 2

1

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

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

检查这个JSFiddle

或者没有 jQuery

config.el.onclick = fn;

另一个JSFiddle

于 2013-08-02T09:01:02.530 回答
1

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");
    }

});
于 2013-08-02T09:24:52.717 回答