如何为DOM元素注册事件处理程序
How to register event handlers for a DOM element
请帮帮我。如何在主干中注册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
相关文章:
- keyup事件处理程序更改焦点不适用于快速键入
- 提示使用服务器端事件处理程序激活JavaScript
- 将事件处理程序绑定到任何可能的事件
- 如何在页面加载后注册事件处理程序
- Javascript:注册事件处理程序的最佳位置
- JavaScript 在外部注册事件处理程序
- 触发器 JavaScript 事件处理程序已在插件上注册
- 如何为TypeScript声明注册事件处理程序
- 如何为DOM元素注册事件处理程序
- 如何在JavaScript中注册window.external.notify事件处理程序
- 侦听新注册的事件处理程序
- 如何为WebBrowser注册事件处理程序.ScriptNotify事件
- 用JS和Canvas注册事件处理程序
- 用Jquery创建的对象注册一个已有的事件处理程序
- 如何为Google+ Hangouts视频源注册鼠标点击事件处理程序?
- 为多个控件注册一次事件处理程序-是否可能
- 是否可以像这样注册事件处理程序
- Firefox没有注册事件处理程序
- HTMLDOM:如何获取已注册事件处理程序的完整列表
- 请参阅在任何元素上注册的任何事件处理程序的代码