gpt4 book ai didi

javascript - OO Javascript/jQuery 事件点击处理程序

转载 作者:行者123 更新时间:2023-11-28 15:28:08 26 4
gpt4 key购买 nike

我是 JS 开发新手,我正在尝试使用“类”来使用 OO Javascript,我有一个名为“Timeblock”的类,它带有构造函数:

var Timeblock = function(occupied, on, element) {
this.occupied = occupied;
this.on = on;
this.room_id = 0;
this.element= element;
}

我用这种方式创建了一个对象:

timeblock = new Timeblock(false, false, $('#element'));

此时一切正常,现在我尝试向其元素 var 上的类构造函数添加一个单击事件监听器,我尝试过:

var Timeblock = function(occupied, on, element) {
this.occupied = occupied;
this.on = on;
this.room_id = 0;
this.element = element;

timeblock = this;
this.element.click(function() {
timeblock.update();
});
}

Timeblock.prototype.update = function() {
if (!occupied) {
this.element.addClass('on');
}
}

在 Chrome 中调试时,我在 this.element.addClass('on'); 上放置了一个断点,检查我可以读取的对象 this.element: jQuery.fn.init[ 0] 但我无法让它工作。

即使在控制台中,当我输入 this.element 时,我也会得到 undefined,但如果我输入 this.ocpied,我会得到 false

我的问题是,为什么我变得未定义?我怎样才能让它工作?,我搜索了又搜索,但找不到任何学习 OO Javascript 的好 Material 。

最佳答案

var Timeblock = function(occupied, on, element) {
this.occupied = occupied;
this.on = on;
this.room_id = 0;
this.element = element;

var timeblock = this; // need var statement
this.element.click(function() {
timeblock.update();
});
}

Timeblock.prototype.update = function() {
if (!this.occupied) { // forgot this
this.element.addClass('on');
}
}

两个错误。我修复了它们,并留下了解释的评论。

关于javascript - OO Javascript/jQuery 事件点击处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28398756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com