Javascript 如何为DOM元素注册事件处理程序
请帮帮我。 如何为主干中的DOM元素注册事件处理程序Javascript 如何为DOM元素注册事件处理程序,javascript,backbone.js,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);
<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);
});
init
$(函数(){
函数配置(){
this.el=document.getElementById('init');
}
var config=新配置;
_.extend(配置,主干.Events);
函数fn(){
log('hello');
}
config.el.on('click',fn);
});
我在代码中遇到一个错误:
TypeError:config.el.on不是函数
主干网也有类似jquery的方法,比如jquery
config.el
正在引用DOM元素。如果您试图调用jQuery方法(on()
),则需要将该DOM引用转换为jQuery对象:
$(config.el).on('click',fn);
检查这个
或者不使用jQuery
config.el.onclick = fn;
另一个Backbone.Events是一个模块,它使对象能够绑定和触发自定义命名事件 e、 g 所以,如果您想注册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");
}
});
我不认为这是真正正统的做法,但您应该扩展
config.el
,而不是config
,否则config.el
将引用普通DOM元素,而不是扩展的DOM元素。如何在没有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");
}
});