jQuery trigger click和click()有什么区别?

7
我有这样一个简单的代码:在这里
$(".btn").on('click',function () {

  $(".a").trigger('click');
});

$(".btn2").on('click',function () {

  $(".a")[0].click();
});

我想模拟点击一个锚点,但是当我使用jQuery的trigger时,它不起作用(为什么?)。

当我使用"jsobj".click()函数时,它可以起作用。

在阅读了jQuery文档之后,我没有看到任何理由它不应该起作用。

请帮忙解决问题。

PS:我正在使用Chrome浏览器。


你尝试过 $(".a")[0].trigger('click') 吗? - Samson
1
这会起作用,问题是为什么trigger('click')不起作用。 - Royi Namir
2
确实是非常有趣的观察。 - Adi
你可以在这里找到更清晰的答案:https://dev59.com/ZmvXa4cB1Zd3GeqPGSrH - Michael
3个回答

7

点击和触发点击之间有什么区别? - Royi Namir
1
你应该定义一个handler来触发click事件,然后两种方式都可以触发事件,即$(".a").trigger('click');$($(".a")[0]).click();但是你必须为此定义一个click handler - The Alpha
抱歉,我不明白为什么在按钮上触发点击事件会像我按下它一样执行,而触发 href 则不会。 - Royi Namir
这是不同的情况。在这里,您明确将“on click”附加到了“href”。 - Royi Namir

3

因为$(".a")[0]返回的是原生JavaScript节点,所以您不能使用jQuery对象方法。


但如果我将点击事件绑定到它上面,然后使用触发器,它就会起作用...那么呢? - Royi Namir

2
这是因为 JQuery 的 .trigger() 并没有真正触发本地事件。比如,在你的脚本中尝试以下内容:
$(".btn").on('click',function () {

  $(".a").trigger('click');
});
$(".a").click(function(){alert('triggered!')});

当您使用JQuery创建一个自定义处理程序时,然后可以使用.trigger()方法触发事件。
更新:这很有趣,似乎只会发生在<a>标签和href上。请查看这个

当它说触发器不会触发本机事件时(尽管我知道这是行为上的答案) - Royi Namir
@RoyiNamir,请查看更新中的示例,非常有趣。至于它所说的地方,我刚刚得出了结论。 - Adi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接