首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在onclick函数中保留‘this’引用的同时,以编程方式从锚标记调用onclick()事件?

如何在onclick函数中保留‘this’引用的同时,以编程方式从锚标记调用onclick()事件?
EN

Stack Overflow用户
提问于 2009-05-25 12:07:22
回答 6查看 245.7K关注 0票数 86

下面的代码不起作用...(至少在火狐中不是:document.getElementById('linkid').click()不是一个函数)

代码语言:javascript
复制
<script type="text/javascript">
    function doOnClick() {
        document.getElementById('linkid').click();
        //Should alert('/testlocation');
    }
</script>
<a id="linkid" href="/testlocation" onclick="alert(this.href);">Testlink</a>
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-05-25 12:35:13

您需要在该元素的上下文中apply事件处理程序:

代码语言:javascript
复制
var elem = document.getElementById("linkid");
if (typeof elem.onclick == "function") {
    elem.onclick.apply(elem);
}

否则,this将引用执行上述代码的上下文。

票数 116
EN

Stack Overflow用户

发布于 2013-05-27 17:59:49

解决这个问题的最好方法是使用Vanilla JS,但是如果你已经在使用jQuery,有一个非常简单的解决方案:

代码语言:javascript
复制
<script type="text/javascript">
    function doOnClick() {
        $('#linkid').click();
    }
</script>
<a id="linkid" href="/testlocation" onclick="alert(this.href);">Testlink</a>

在IE8-10,Chrome,Firefox中测试。

票数 22
EN

Stack Overflow用户

发布于 2009-05-25 12:21:46

要触发事件,基本上只需调用该元素的事件处理程序即可。对您的代码稍作修改。

代码语言:javascript
复制
var a = document.getElementById("element");
var evnt = a["onclick"];

if (typeof(evnt) == "function") {
    evnt.call(a);
}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/906486

复制
相关文章

相似问题

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