我想将对象的方法绑定到元素的事件。例如:
function ABC()
{
this.events_list = function() {
}
this.events_list.clickElement = function() {
alert("hello world");
}
this.bindEvents() = function() {
$("#element").click(this.events_list.clickElement);
}
}
var _abc = ABC();
_abc.bindEvents();
上述代码未将click事件绑定到clickElement
方法。
答案 0 :(得分:2)
this.bindEvents() = function() {
取出第一组括号,它们没有意义。
this.bindEvents = function() {
您还需要使用new ABC()
来构建新的ABC
对象;仅ABC()
会将this
绑定到全局对象,这绝对不是您想要的。
此外,如果this.events_list
实际上不是一个函数,而是一个其他函数的容器,请不要将其作为函数。
this.events_list = {};
最后,请记住使用分号。
答案 1 :(得分:1)
在致电#element
之前,_abc.bindEvents()
是否存在。您可以将其全部包装在
$(document).ready(function() {
var _abc = ABC();
_abc.bindEvents();
});
function ABC()
{
this.events_list = function() {
}
this.events_list.clickElement = function() {
alert("hello world");
}
this.bindEvents() = function() {
$("#element").click(this.events_list.clickElement);
}
}
需要查看更多用例以执行更多操作。
答案 2 :(得分:0)
jQuery插件可以让你头疼,而且创作简单:
<input type="checkbox" name="chk1" class="clickable" />check me<br />
<div name="item 2" class="clickable">click me<div>
使上述每个项目都可点击:
(function( $ ) {
$.fn.bindevents = function() {
events_list = {
clickElement : function() {
alert("hello world from " + $(this).attr('name'));
}
};
this.each(function() {
$(this).bind('click', events_list.clickElement);
});
};
})( jQuery );
$('.clickable').bindevents();