Javascript/jQuery对象编码问题

Javascript/jQuery object coding issue

本文关键字:编码 问题 对象 jQuery Javascript      更新时间:2023-09-26

我在自定义。js文件中新建了一个名为EditableObject的Javascript对象

function EditableObject(e, dv, i) {
this.element = e;
this.default_value = dv;
this.set = 0;
this.id = i;
alert(this.element.html());
this.element.click(function (event) {
    alert(this.element.html());
});

}

在我的主页中,我有一个名为"field"的div,其中包含文本"yeah",如下所示:

 <div id="field">yeah</div>

在我的主页的脚本部分,我有:

var t = new EditableObject($("#field"), "value", 1);

当页面加载时,有一个警告框说"是"。但当我点击div时,我得到一个错误,说"this。元素未定义"。为什么会发生这种情况?

在您的click处理程序中,this引用不同的作用域(取决于浏览器,它将是event对象或当前函数)。您需要一个闭包来访问父作用域的this:

var self = this;
this.element.click(function (event) {
    alert(self.element.html());
});

this的事情是它在每个函数中根据上下文而不同。在jQuery绑定函数中,它是元素本身,所以最直接的解决方案是:

this.element.click(function (event) {
    alert($(this).html());
    // this is element, $(this) is jQuery object containing element
});

所以目前,this指的是元素,它不同于例如行

this.id = i;

,它指的是EditableObject的实例,因为您在另一个函数中使用this

单击函数中的this仅指单击本身。我相信你可以使用

e.html(); 

而不是

这个在你的点击处理程序是指DOM对象,而不是EditableObject的实例。

你可以这样修改:

this.element.click(function (event) {
    alert($(this).html());
});