我有点问题。我在一个对象中创建了一些元素并且工作正常。但是现在我想添加一些EventListeners来执行一个函数内部我的对象,问题是我无法执行函数“setSelection”。 (“this”不是对象的“this”,而是事件的“this”在click-function内部。)
function Object() {
this.init = function () {
// delete table
// ...
// set table
$('tr').append('<td id="1">test</td>');
$('td').click(function() {
// execute setSelection
});
}
this.setSelection = function(x) {
alert('You clicked id ' + x);
}
}
$(document).ready(function() {
x = new Object();
x.init();
});
答案 0 :(得分:1)
$('td').click((function(e) {
// execute setSelection
this.setSelection(...);
}).bind(this));
答案 1 :(得分:1)
您可以通过将外部作用域中的this
引用存储到可以在click
事件处理程序中使用的变量来解决此问题:
function Object() {
var _this = this;
this.init = function () {
// delete table
// ...
// set table
$('tr').append('<td id="1">test</td>');
$('td').click(function() {
_this.doSomething();
});
}
this.setSelection = function(x) {
alert('You clicked id ' + x);
}
}
答案 2 :(得分:0)
我的方法是:
app indexing
答案 3 :(得分:0)
我已经解决了这个问题...
function Object() {
this.init = function () {
// delete table
// ...
// set table
$('tr').append('<td id="1">test</td>');
this.setSelection();
}
this.setSelection = function() {
$('td').click(function() {
alert('You clicked id ' + $(this).attr('id'));
});
}
}
$(document).ready(function() {
x = new Object();
x.init();
});