Javascript/jQuery对象编码问题
Javascript/jQuery object coding issue
我在自定义。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());
});
相关文章:
- ajax表单提交的编码问题
- 导出为 CSV 时的编码问题
- 地理编码器 - IE8 中的编码问题
- 参数未正确传递给AJAX-编码问题
- AngularJS/Grunt编码问题
- Outlook中的HTML锚定邮件主题编码问题
- NetSuite Restlet PDF 文件编码问题
- 在安卓中使用 JavaScript 设置内容时出现编码问题
- Javascript到csv导出编码问题
- 为什么此字符编码问题仅在选定系统上出现
- JavaScript utf-8 编码问题
- JavaScript WebSocket 字符编码问题(文本)
- 文档.引荐来源网址编码问题
- jquery单词计数器的输入编码问题
- JSP、JQuery和Javascript的字符集编码问题
- 外部gem的资产管道编码问题(UTF-8与ASCII-8BIT)
- 集成Moment JS库时出现编码问题
- Expressjs:res.download期间图像文件编码问题
- php中日语字符的编码问题
- Strophe字符编码问题