我有一个简单的链接点击模拟,我想用jQuery做。从我读到的,这应该工作,但下面的代码不起作用。如果我做同样的事情或其他事件的一部分,也没有任何事情发生。想法?
<script type="text/javascript">
$(function() {
$("#lnk_0").click();
});
</script>
<a id="lnk_0" href="http://mydomain.com/mypage.html">link</a>
答案 0 :(得分:24)
请参阅click()
:
触发每个的click事件 匹配元素。
导致所有具有的功能 已被绑定到该点击事件 执行。
需要注意的重要一点是,不重复点击链接。它只触发相关事件。如果您想更改位置:
var link = $("#link_0");
link.click();
window.location.href = link.attr("href");
但即使这只是一个近似值,因为它不能满足处理程序停止事件传播的需要。
答案 1 :(得分:8)
调用jQuery的click
方法将调用您添加的任何click
处理程序,但不会单击该链接。
你需要写:
window.location = $("#lnk_0").attr('href');
(这假设没有任何click
事件处理程序)
编辑:在回复您的评论时,您可以调用仅限IE的click
方法,如下所示:
if ($("#lnk_0")[0].click)
$("#lnk_0")[0].click();
else
window.location = $("#lnk_0").attr('href');
答案 2 :(得分:4)
要在使用jQuery覆盖时允许超链接功能(悬停,手形光标等),您可以执行以下操作:
<script>
$(function() {
$( "#dialog-modal" ).dialog({
autoOpen: false,
height: 320,
modal: true
});
$( "#open-modal" ).click(function() {
$( "#dialog-modal" ).dialog( "open" );
});
</script>
<a href="javascript:return true" id="open-modal">Open Modal</a>
<div id="dialog-modal" title="Hello World">
Hello
</div>
答案 3 :(得分:0)
做到这一点:
$('#lnk_0')[0].click();
答案 4 :(得分:-1)
我不确定它是否解决了您的确切问题,但这里有一段我用来模拟用户点击的代码:
var target = "...";
var e = jQuery.Event("click");
target.trigger(e);
if (!e.isDefaultPrevented() && target.attr("href"))
window.location.href = target.attr('href');