首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让"this“在onlick过程中引用一个类而不是html按钮?

如何让"this“在onlick过程中引用一个类而不是html按钮?
EN

Stack Overflow用户
提问于 2012-11-07 03:30:04
回答 3查看 59关注 0票数 1

我在JavaScript中创建了一个秒表类,当用户单击"start stopwatch“按钮时,秒表应该会启动。

我的问题是,当用户单击“开始秒表”按钮时,"this“引用的是按钮,而不是秒表对象。

有什么建议吗?

下面是一个示例:https://c9.io/rjfreund/stopwatch/workspace/stopwatch.html

EN

回答 3

Stack Overflow用户

发布于 2012-11-07 03:33:20

由于您使用的是jQuery:

代码语言:javascript
复制
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>

...use .bind().on()以绑定处理程序,并在事件数据中设置对象。

代码语言:javascript
复制
$('.yourElement').on("click", {obj: yourObject}, function(event) {
    alert(event.data.obj);
});
票数 3
EN

Stack Overflow用户

发布于 2012-11-07 03:33:54

这是我在没有代码的情况下所能做的最好的事情:

代码语言:javascript
复制
<a id="start_stopwatch" onclick="yourStopwatchClass.start.call(yourStopwatchClass)">Start stopwatch!</a>

callthis变量引用到您传入的任何内容,在本例中是Stopwatch类。

票数 0
EN

Stack Overflow用户

发布于 2012-11-07 05:08:33

函数的this的值由函数的调用方式设置。对于监听程序,如果分配如下:

代码语言:javascript
复制
element.onclick = instance.method;

然后,处理程序或多或少会将其作为元素的方法调用,并将其this设置为该元素。使用其他方法(addEventListener和各种库方案)附加侦听器也是这样做的。

您可以使用callapply,但也可以包装函数并调用它来将this设置为所需的对象:

代码语言:javascript
复制
element.onclick = funciotn() {insance.method()};

您还可以使用ES5提供的bind、各种库和shims

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13258004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档