Rop*_*tah 79 javascript dom-events
是否可以以编程方式为锚标记调用onClick-event,同时保持对锚的'this'引用?
以下不起作用...(至少在Firefox中不起作用:document.getElementById('linkid').click()不是函数)
<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>
Run Code Online (Sandbox Code Playgroud)
Gum*_*mbo 106
您需要apply
在该元素的上下文中使用事件处理程序:
var elem = document.getElementById("linkid");
if (typeof elem.onclick == "function") {
elem.onclick.apply(elem);
}
Run Code Online (Sandbox Code Playgroud)
否则this
将引用执行上述代码的上下文.
lus*_*chn 18
有一个非常简单的jQuery解决方案,我只是使用它,它的工作非常好:
<script type="text/javascript">
function doOnClick() {
$('#linkid').click();
}
</script>
<a id="linkid" href="/testlocation" onclick="alert(this.href);">Testlink</a>
Run Code Online (Sandbox Code Playgroud)
在IE8-10,Chrome,Firefox中测试过.
sim*_*rsh 15
要触发事件,您基本上只需调用该元素的事件处理程序.您的代码稍有变化.
var a = document.getElementById("element");
var evnt = a["onclick"];
if (typeof(evnt) == "function") {
evnt.call(a);
}
Run Code Online (Sandbox Code Playgroud)
当然,OP 非常相似地表示这不起作用,但它对我有用。根据我的消息来源中的注释,它似乎是在 OP 的帖子前后或之后实施的。也许现在更标准了。
document.getElementsByName('MyElementsName')[0].click();
Run Code Online (Sandbox Code Playgroud)
就我而言,我的按钮没有 ID。如果您的元素有一个 id,最好使用以下(未经测试)。
document.getElementById('MyElementsId').click();
Run Code Online (Sandbox Code Playgroud)
我最初尝试过这种方法,但没有奏效。谷歌搜索后,我回来发现我的元素是按名称命名的,并且没有 ID。仔细检查您正在调用正确的属性。
来源: https //developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click
小智 5
$("#linkid").trigger("click");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
217200 次 |
最近记录: |