7

我有这个简单的代码: 这里

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

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

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

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

我正在尝试模拟按下 Anchor。

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

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

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

帮助 ?

PS:我正在使用Chrome。

4

3 回答 3

7

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

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

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

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

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

演示。

于 2012-07-14T19:56:09.713 回答
3

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

于 2012-07-14T19:14:36.503 回答
2

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

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

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

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

更新:这很有趣,似乎只发生在<a>标签和href. 看一下这个

于 2012-07-14T19:24:01.333 回答