这有效:
$(function() {
document.getElementById('click').click();
});
这不是:
$(function() {
$('#click').click();
});
为什么?
编辑:(为了完整起见;已经达成答案):
$(function() {
$('#click').trigger('click')
});
也失败了
答案 0 :(得分:4)
为什么?
因为jquery click方法接受将在点击时调用的处理程序。
但是,DOM click方法模拟了click方法本身。
你需要
$('#click')[0].click();
或触发它
$('#click').trigger('click')
$('#click').click();
最后两个仅在分配了事件处理程序时才有效。也就是说,它不会触发简单anchor
点击,但会调用onclick
事件。
以下是JS Fiddle
<强>样本强>
function f1()
{
document.getElementById("link1").click();
document.getElementById("link2").click();
}
function f2()
{
$("#link1").click();
$("#link2").click();
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="javascript:alert(1)" id="link1">Link 1 </a>
<a onclick="alert(2)" id="link2">Link 2 </a>
<button onclick="f1();">DOM click</button>
<button onclick="f2();">Jquery Click</button>
&#13;
答案 1 :(得分:2)
更好的问题是,为什么你认为它应该有用?
两段完全不同的代码,为什么它们的工作原理相同?
具体来说,在第一种情况下,您有一个某种类型的HTML元素,并且您正在调用其本机.click()
方法,该方法会触发单击它(通常用于链接或按钮)
另一方面,第二个获取jQuery集合,包含单个元素(如果不存在则不包含任何元素)。对于jQuery集合,调用.click()
会将事件处理程序附加到集合中所有元素的click
事件。
因此...
一方面,您调用触发点击的功能
另一方面,您调用一个函数将事件处理程序绑定到集合中所有元素的click
事件。
为什么你认为应该有效?