添加调用其他方法的事件的方法

时间:2018-01-17 15:43:17

标签: javascript events methods this

我需要创建一个至少有两个方法的对象。第一种方法创建一个事件,将按钮绑定到对象的第二个方法。

但是,我在创建活动时遇到了问题。 this始终附加到按钮而不是对象的实例。

我尝试了bind(),但如果是解决方案,我找不到使用它的好方法。

甚至可以这样做吗?如果是的话,怎么办呢?

function obj()
{
  this.attribute = 42;
  this.eventer();
}

obj.prototype.eventer = function()
{
  $("#but").on("click",this.print);
}

obj.prototype.print = function()
{
  $("#print").html(this.attribute);
}

var test = new obj();
<script src='//code.jquery.com/jquery.min.js'></script> 
<button id="but">Click me !</button>
<div id="print"></div>    

1 个答案:

答案 0 :(得分:1)

来自bind()的javascript参考手册:

  

bind()方法创建一个新函数,在调用时,将其this关键字设置为提供的值,并在调用新函数时提供任何前面提供的给定参数序列。

将处理程序传递给click事件时,只需使用this.print.bind(this)

function obj()
{
  this.attribute = 42;
  this.eventer();
}

obj.prototype.eventer = function()
{
  $("#but").on("click",this.print.bind(this));
}

obj.prototype.print = function()
{
  $("#print").html(this.attribute);
}

var test = new obj();
<script src='//code.jquery.com/jquery.min.js'></script> 
<button id="but">Click me !</button>
<div id="print"></div>