【问题标题】:jQuery trigger click vs click ()?jQuery触发点击与点击()?
【发布时间】:2012-07-14 06:10:21
【问题描述】:

我有这个简单的代码:here

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

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

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

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

我正在尝试模拟按下 Anchor。

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

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

阅读 jQuery 文档后,我看不出有什么理由不应该这样做。

帮助?

PS:我正在使用 Chrome。

【问题讨论】:

  • 你试过 $(".a")[0].trigger('click') 吗?
  • 这会起作用,问题是为什么 trigger('click') 不起作用
  • 观察确实很有趣..
  • 你会在这里找到更清晰的答案:stackoverflow.com/questions/13505003/…

标签: javascript jquery jquery-events


【解决方案1】:

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

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

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

给定的示例将触发a 的点击事件,并将执行已使用该事件注册的处理程序(匿名函数)

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

DEMO.

【讨论】:

  • 那么点击和触发点击有什么区别?
  • 您应该定义一个handler 来触发click event,然后您可以通过两种方式触发该事件,即$(".a").trigger('click');$($(".a")[0]).click();,但您必须有一个click handler for that.跨度>
  • 对不起,我不明白为什么触发点击按钮实际上会像我按下它一样,而触发 href 不会
  • 这是不同的场景。在这里您明确地将点击附加到 href。
【解决方案2】:

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

【讨论】:

  • 但是如果我绑定到它一个点击事件,然后使用触发器,它会工作......所以......?
【解决方案3】:

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

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

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

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

更新:这很有趣,似乎只有<a> 标签和href 才会发生。 Check this out

【讨论】:

  • 它说触发器不会触发本机事件(尽管我知道它的行为答案)
  • @RoyiNamir,查看更新中的示例,非常有趣。至于它在哪里说的,我刚刚得出结论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-19
  • 2012-08-10
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
相关资源
最近更新 更多