请帮帮我。 如何为骨干网中的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
的方法答案 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");
}
});