如何触发HTML链接(锚点元素)的默认动作/事件?

如何触发HTML链接(锚点元素)的默认动作/事件?

问题描述:

如何触发HTML链接(锚元素)的默认动作/事件?这就是使用JavaScript/jQuery来“点击”现有的HTML链接,就好像用户点击了它一样。如何触发HTML链接(锚点元素)的默认动作/事件?

只使用.click()似乎并不奏效。

$('#alink').click(); 
// the nothing happening 

对于这个HTML:

<a id="alink" href="http://google.com" target="_blank">a link</a> 

例小提琴:http://jsfiddle.net/dCfD8/

我宁可不使用JavaScript创建一个新的窗口(和照顾其他任何需要处理时,链接被点击)。

+1

看到这个:http://stackoverflow.com/questions/1694595/can-i-call-jquery - 点击后跟一个链接 - 如果我还没有绑定一个事件手柄 –

+0

@Digital Plane,谢谢,以前没有看到过。但是,知道这件事是否有任何改变会很有趣,或者即使对于最新的浏览器(例如Chrome 13+),“无法完成”的答案仍然适用。 – Qtax

可以使用jQuery的一个简单方法trigger触发click事件。

$('#alink').trigger('click'); 

但要小心,即使事件被触发,浏览器也不会跟随链接href。遵循href的唯一方法是用鼠标自己实际点击它。

据我所知,没有办法强制链接的行为就像点击一样。您必须更改文档位置或类似的内容才能在页面之间实际导航。

+0

接受“有没有办法强制链接的行为,如果它被点击”,这是http://stackoverflow.com/questions/1694595/can-i-call-jquery-click-to-follow-an- a-link-if-i-havent-bound-an-event-handl也说明。 – Qtax

试试这个:

$('#alink').trigger('click'); 
+0

不起作用(至少在小提琴中)。 – Qtax

+1

这只会调用与点击相关的jQuery事件,如果你想“模拟”用户点击一个锚点重定向到另一个url,你可以这样做:'document.location = $('#alink')。attr('href ');' –

+0

不适用于'target =“_ blank”'或任何其他特殊链接属性。 – Qtax

扩大对法比奥奇切尔基亚对自己的评论:您可以使用window.open

var link = $('#alink'); 
var target = link.attr("target"); 
window.open(link.attr("href"), target ? target : "_self"); 
+0

+1。似乎可以工作。但我担心(默认)弹出处理程序/阻止程序可能会阻止它,而它们会影响正常用户单击链接。 – Qtax

+0

是的,实际上大多数弹出式窗口拦截器都会阻止它,如果它不是由用户交互触发的。在没有设定目标的情况下,你可以将它与'doument.location = ...'结合起来。也许你应该解释背景,为什么你需要这样做。也许这种方式可以找到替代品。 – RoToRa

<script src='jquery lib source' ></script> 
    <script> 
    function force() 
    { ...do something...to fill page2 
     $('#gopage2').trigger('submit'); 
    }  
    </script> 
    <form action='#page2' id='gopage2'> 
    </form> 

    ... 
    <span name='#page2'>This is page2</span> 
+1

请考虑为您的答案添加一些解释,而不仅仅是一个代码。我们的目标是教育人们,让他们理解答案,并可以在其他情况下应用。如果你评论你的代码并添加一个解释,那么你不仅会对这次提问的人更有帮助,而且会对将来可能遇到同样问题的人更有帮助。 – starsplusplus