Jquery .click()获得优势

时间:2012-01-02 16:52:11

标签: jquery click this

在我班级的方法中,我有:

this.background.click(function() {
    this.terminate();
});

显然this.terminate();不起作用,因为this引用this.background函数内的jquery.click。如何从上级获得this来写作?

4 个答案:

答案 0 :(得分:5)

声明包含外部this的变量:

var self = this;
this.background.click(function() {
    self.terminate();
});

答案 1 :(得分:2)

尝试:

this.background.click( $.proxy( this.terminate, this ) );

答案 2 :(得分:0)

你可以像@Andrew那样说,或者可以制作“yourObject.terminate();”

例如:

var yourObject = {
    background: $("#background"),
    terminate: function ()
    {
        alert("do something...");
    },
    addEvents: function ()
    {
        this.background.click(function()
        {
            yourObject.terminate();
        });
    }
};


$(function()
{
    yourObject.addEvents();
});

进行改进,确保'背景'选择器存在(如果javascript在html之前加载),并使用jquery“live()”或“delegate()”或“on()”来附加元素中的事件。

答案 3 :(得分:0)

使用bind

 $(".detailsbox").click(function(evt){
     test.bind($(this))();
  });
  function test()
  {
     var $this = $(this);
  }