将对象的方法绑定到元素的事件

时间:2012-08-05 17:26:20

标签: javascript jquery javascript-events

我想将对象的方法绑定到元素的事件。例如:

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方法。

3 个答案:

答案 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();