jQuery触发click vs click()?

时间:2012-07-14 19:11:58

标签: javascript jquery javascript-events

我有这个简单的代码: here

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

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

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

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

我正试图模仿按下Anchor。

但是当我使用jQuery的trigger时,它不起作用(为什么?)

当我使用"jsobj".click() func时,它确实有效。

阅读完jQuery文档后,我没有看到为什么不应该这样做的原因。

帮助?

PS:我正在使用Chrome。

3 个答案:

答案 0 :(得分:6)

实际上$(".a").trigger('click');触发了click事件,但并不意味着它会点击链接,而是如果你已经有了事件处理程序,它就会执行事件处理程序,即

$(".btn, .btn2").on('click',function () {
    $($(".a")[0]).trigger('click'); // first element
});

$(".a").on('click', function (e){
    alert(e.target);
});​

给定的示例将触发a的click事件,并将使用

执行已经为该事件注册的处理程序(匿名函数)
$(".a").on('click', function (e){...});

DEMO.

答案 1 :(得分:3)

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

答案 2 :(得分:2)

这是因为JQuery的.trigger()并没有真正触发本机事件。例如,在您的脚本中尝试这个:

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

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

使用JQuery创建服装处理程序时,那么将使用.trigger()方法触发事件。

更新:这非常有趣,似乎仅与<a>代码和href一起发生。 Check this out