Javascript jQuery:如何将事件附加到类内新创建的元素

Javascript jQuery:如何将事件附加到类内新创建的元素,javascript,jquery,Javascript,Jquery,我试图创建一个对象类,它将获取数据并创建元素列表。我还想在激发类的方法的新LI上附加一个click事件。但是,当使用 el.click(function() { this.method(); }); 此不再引用该类,因此单击li将显示未定义的方法错误。关于如何将类方法附加到新创建的元素的建议 JS代码: if (typeof Object.create !== 'function') { Object.create = function(o) { functio

我试图创建一个对象类,它将获取数据并创建元素列表。我还想在激发类的方法的新LI上附加一个click事件。但是,当使用

el.click(function() {
    this.method();
});
不再引用该类,因此单击
li
将显示未定义的方法错误。关于如何将类方法附加到新创建的元素的建议

JS代码:

if (typeof Object.create !== 'function') {
    Object.create = function(o) {
        function F() {}
        F.prototype = o;
        return new F();
    };
}

var base = {
    init: function(data) {
        this.data = data;
        this.show_data();
    },


    show_data: function() {

        for (i = 0; i < this.data.bindings.length; i++) {

            var $item = $('<li>' + this.data.bindings[i].ircEvent + '</li>');
            $item.click(function() {
                this.show_clicked(i);
            });
            $('#it').append($item);
        }
    },

    show_clicked: function(index) {
        console.log('clicked in method');
    }
};

var extended = {

    show_alert: function() {
        alert('second class');
    }
};


var myObj = {
    "bindings": [
        {
        "ircEvent": "PRIVMSG",
        "method": "newURI",
        "regex": "^http://.*"},
    {
        "ircEvent": "PRIVMSG",
        "method": "deleteURI",
        "regex": "^delete.*"},
    {
        "ircEvent": "PRIVMSG",
        "method": "randomURI",
        "regex": "^random.*"}
    ]
};

$(document).ready(function() {

    var baseObj = Object.create(base);
    baseObj.init(myObj);

});
if(type of Object.create!=“function”){
Object.create=函数(o){
函数F(){}
F.原型=o;
返回新的F();
};
}
var基={
init:函数(数据){
这个数据=数据;
这个。显示_数据();
},
显示数据:函数(){
对于(i=0;i'+this.data.bindings[i].ircEvent+'');
$item.click(函数(){
这个。显示(i);
});
$('it')。追加($item);
}
},
显示单击的:函数(索引){
log('clicked in method');
}
};
扩展变量={
显示警报:函数(){
警报(“二级”);
}
};
var myObj={
“绑定”:[
{
“ircEvent”:“PRIVMSG”,
“方法”:“newURI”,
“regex”:“^http://.*}”,
{
“ircEvent”:“PRIVMSG”,
“方法”:“删除URI”,
“regex”:“^delete.*”},
{
“ircEvent”:“PRIVMSG”,
“方法”:“随机URI”,
“regex”:“^random.*”}
]
};
$(文档).ready(函数(){
var baseObj=Object.create(base);
baseObj.init(myObj);
});

Fiddle:

为了使方法在click函数中工作,只需引用包含对象的全局变量即可

该行:

    this.show_clicked(i);
应改为:

   base.show_clicked(i);
如果希望在最终结果中显示索引值,则必须将其作为数据传递,或者使用jquery确定单击了哪个索引


这里是一个更新的fiddle,它可以工作-

您的fiddle甚至不能使用基本代码,显示了数据的属性“bindings”的错误。您需要删除fiddle上的包装,这会导致对象在$(document)之前被初始化。ready()callLook in,它应该有助于您的单击绑定修复fiddle最初复制的错误链接。