请帮我理解此代码中的问题。我试过它的多种变化无济于事。我可以让代码在Chrome控制台中运行,但不能硬编码。请注意,对于我的项目,此行的结构至关重要:
certifi.old_where()
请不要修改<div class="asqFooter"><a href="http://google.com">Google</a></div>
:)
此代码背后的想法是在没有类且没有id的情况下模拟<div><a></a></div>
锚点击。因此,<a>
包含在<a>
元素中。该代码使div可以点击,但它不会模拟点击<div>
链接
无论如何,下面是简化的代码版本:
asqFooter
有什么想法吗?我也试过这些变化:
<head>
<script type="text/javascript">
function SimulateAskAQuestion() {
$('.asqFooter a').click();
}
</script>
</head>
<body>
<a href="#" onclick="SimulateAskAQuestion()"><div class="faX"><i class="fasize fa fa-question-circle-o fa-5x"></i><br>Ask a Question</div> </a>
<div class="asqFooter"><a href="http://google.com">Google</a></div>
</body>
和<head>
</head>
<body>
<a href="javascript:GetElementsByClassName('.asqFooter' a');">
<div class="faX"><i class="fasize fa fa-question-circle-o fa-5x"></i> <br>Ask a Question</div> </a>
<div class="asqFooter"><a href="http://google.com">Google</a></div>
</body>
答案 0 :(得分:0)
调用click
方法的无参数变体等同于在元素上调用trigger("click")
。 trigger
方法仅触发相应的事件,它不会触发锚链接的导航。您可以将click
属性与jQuery的window.location
方法结合使用,将浏览器指向锚标记指向的URL,而不是使用attr
方法。
function SimulateAskAQuestion() {
window.location = $('.asqFooter a').attr("href");
}
Here's a working example.(我已更改.asqFooter
div中锚标记的网址,以便网站在iframe中正确加载,这应该可以正常使用iframe之外的任何其他网址。)
答案 1 :(得分:0)
在jQuery对象之后添加[0]
,以使其正常工作:$('.asqFooter a')[0].click();
您需要访问click
的实际DOM元素才能处理a
代码。
jQuery-object将实际的DOM元素保存为具有键0 - n
的属性。即使只有一个DOM元素,该元素仍然包含在jQuery对象内,位于键"0"
。
因此,使用$('.asqFooter a')[0].click();
,您将在jQuery对象的第一个元素上执行click
:
function SimulateAskAQuestion() {$('.asqFooter a')[0].click();}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a href="#" onclick="SimulateAskAQuestion()"><div class="faX"><i class="fa fa-question-circle-o fa-5x"></i><br>Ask a Question</div></a>
<div class="asqFooter"><a href="http://stackoverflow.com">Link</a></div>
然而,这仍然只能在双击后才能使用,这是因为href="#"
。
没有它,它会在 singleclick 之后起作用:
function SimulateAskAQuestion() {$('.asqFooter a')[0].click();}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a onclick="SimulateAskAQuestion()"><div class="faX"><i class="fa fa-question-circle-o fa-5x"></i><br>Ask a Question</div></a>
<div class="asqFooter"><a href="http://stackoverflow.com">Link</a></div>
当然,现在第一个a
- 标签是无用的,所以我建议您删除a
并使用CSS将div
设置为a
样式( a, .faX {...}
确保a
和div
具有相同的颜色):
function SimulateAskAQuestion() {$('.asqFooter a')[0].click();}
a, .faX {color:blue; cursor:pointer;}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="faX" onclick="SimulateAskAQuestion()"><i class="fa fa-question-circle-o fa-5x"></i><br>Ask a Question</div>
<div class="asqFooter"><a href="http://stackoverflow.com">Link</a></div>