超级简单的JQuery复杂性......需要洞察力

时间:2016-12-23 01:24:40

标签: javascript jquery html css

请帮我理解此代码中的问题。我试过它的多种变化无济于事。我可以让代码在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>

2 个答案:

答案 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 {...}确保adiv具有相同的颜色):

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>
(我更改了链接,因为您只能在当前域中进行链接)