JQuery / javascript如何获取对象的ID?

时间:2011-03-21 16:39:45

标签: javascript jquery

function cat() {


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

}

var bob = new cat();

// I want it to say 'bob'
bob.getMyID();

http://jsfiddle.net/n7eHj/

警告undefined,任何想法?

我会详细说明,这就是我想要做的事情 - 插入按钮的onclick方法,调用另一个函数,例如:

function cat() {

   this.render = function() { $('#myButton').attr('onclick', 'this.meow()'); };

}

var bob = new cat();
bob.render();

但是这会失败,因为'this.meow'是无稽之谈。如果我知道ID,即。 bob,然后我可以将其更改为.attr('onclick', theID + '.meow()'); };

5 个答案:

答案 0 :(得分:2)

关于您的更新:

假设cat有方法meow,您应该执行以下操作:

function Cat() {
   var that = this;
   this.render = function() { 
       $('#myButton').click(function() {
           that.meow();
       });
   };
}

// assuming it exists something like
Cat.prototype.meow = function() {/*...*/};

您已经有对象(this)的引用,您不需要知道它存储在哪个变量中。

您还应该使用jQuery的click函数来分配点击处理程序。但要小心,因为每次调用render()时都会添加一个新的点击处理程序。

答案 1 :(得分:1)

通用“对象”没有ID - 他们不知道绑定到它们的变量。

此外你可以说:

var bob = new cat();
var alice = bob;

此时你有一只精神分裂症的猫。

答案 2 :(得分:0)

它警告undefined,因为cat没有“id”属性。不确定你如何期望它有一个id。

答案 3 :(得分:0)

我会尝试......

  

我会详细说明,这就是我想要的   do - 插入onclick方法   一个叫另一个的按钮   功能,

这是一些代码......它是否关闭?

var bobthefunction = function () {
    // do crazy stuff
   }

$("buttonname").attr("onclick",bobthefunction);

$("buttonname").click(bobthefunction);

答案 4 :(得分:0)

你可以做的是使用闭包:

function cat() {
    this.render = function() 
    { 
        $('#myButton').click(function(self ) 
        {
            return function() { self.meow() }
        }(this));
    }
}

顺便说一下,不建议使用.attr附加事件处理程序 - 它并不总是适用于所有浏览器/案例。你最好使用.bind或者像.click这样的快捷方式