我发布此信息是因为我无法在其他地方找到相同的问题。
我试图触发锚点的默认操作但是在另一个锚点击处理程序中调用.click()或.trigger(' click')。
像这样:
HTML:
<!-- I want to simulate a user clicking link2 when the user actually clicks link 1. -->
<!-- My guess is that triggering click just triggers any JS-bound click handlers. But that would defeat the point of e.preventDefault() when you usually have to call this to stop the default href being followed -->
<a id="link1" href="#">Click</a>
<a id="link2" target="_blank" href="http://google.com">Link 2</a>
JS:
$(document).ready(function(){
$('#link1').on('click', function(){
$('#link2').click();
$('#link2').trigger('click'); // Neither work
});
});
我觉得这样的菜鸟,但点击没有任何反应。这是否因安全性或可访问性而被阻止?
我不想使用window.open();
答案 0 :(得分:4)
试
jQuery(document).ready(function(){
$('#link1').on('click', function(){
// $('#link2').click().css('color','red');
document.getElementById("link2").click();
});
});
<强> DEMO 强>
或者
您可以触发事件$('#link2')[0].click();
答案 1 :(得分:1)
Triggering-event-handlers清除此事,
.trigger()函数不能用于模仿本机浏览器事件, 例如单击文件输入框或锚标记。这是 因为,没有使用jQuery事件附加事件处理程序 与这些事件相对应的系统。
jQuery UI团队创建了jquery.simulate.js以简化 触发本机浏览器事件以用于其自动化测试。 它的用法是在jQuery的触发器之后建模的。
$( "a" ).simulate( "click" );
对于你的问题,你必须使用javascript核心事件,因为@Bala回答了,
$(function(){
$('#link1').click(function(){
$('#link2')[0].click();
});
});
或使用location.href之类的,
$(function(){
$('#link1').click(function(){
window.location = $('#link2').attr('href');
});
});
此外,Hoffman为同一问题提供了答案
答案 2 :(得分:0)
试试这个:
$(document).ready(function()
{
$("#link1").click(function()
{
$('#link2')[0].click();
});
});