JQuery将dom元素单击事件绑定到成员函数

时间:2012-10-26 08:55:55

标签: jquery function events bind anonymous

我在javascript中有一个带有函数的类:

function myClass()
{
    this.myInit = function()
    {
        myObj = this;
        var id-foo = 'myId';
        jQuery('#'+id-foo).bind('click', function() { myObj.foo(id-foo); } );
    }

    this.foo = function(id) { alert(id); }
}

我想将DOM元素绑定到一个事件(click,dragonstart等)并使其调用当前对象的函数(实际上是这个)。我试图直接调用this.foo但是没有用,firebug告诉我foo不是函数。我给匿名函数的参数id-foo是问题吗? Thx提前

2 个答案:

答案 0 :(得分:3)

你的问题在这里:

 var id-foo = 'myId';

这不是变量的有效名称。

另请注意,如果您未在myInit的实例上调用myClass函数,则代码将无效。

例如,这不起作用:

var obj = new myClass();
var f = obj.myInit;
f();

虽然这个应该有效:

var obj = new myClass();
obj.myInit();

DEMONSTRATION

答案 1 :(得分:0)

在关注@ dystroy的答案之后,我建议您不要将自己与this关键字混淆。遵循这种模式

var myClass = function () {
    myInit: function()
    {
        myObj = this;
        var id_foo = 'myId';
        jQuery('#'+id_foo).bind('click', function() { myObj.foo(id_foo); } );
    }

    foo: function(id) { alert(id); }
}