0
我想創建一個對象類,將採取數據並創建一個元素列表。我也想在新的LI上附加一個點擊事件來激發這個類的一個方法。然而,使用jQuery的:如何將一個事件附加到類中新創建的元素
el.click(function() {
this.method();
});
this
沒有再引用的類時,那麼點擊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);
});
小提琴:http://jsfiddle.net/kmfstudios/EwC3r/5/
你撥弄甚至不與基碼的工作,顯示了數據的屬性「綁定」的錯誤。您需要刪除小提琴上的包裝,這會導致您的對象在您的$(document).ready()調用 – Jlange 2012-07-16 19:02:09
查看[.on](http://api.jquery.com/on/)之前被初始化,它應該有助於您的點擊綁定 – MrOBrian 2012-07-16 19:07:06
最初修復了小提琴複製的錯誤鏈接。 – Conor 2012-07-16 19:17:57