最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - jQuery trigger click vs click ()? - Stack Overflow

programmeradmin4浏览0评论

I have this simple code : here

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

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

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

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

I'm trying to simulate pressing on Anchor.

But when I use jQuery's trigger, it doesn't work (why?)

When I use "jsobj".click() func, it does work.

After reading the jQuery documentation, I don't see any reason why it shouldn't.

Help ?

PS: I'm using Chrome.

I have this simple code : here

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

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

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

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

I'm trying to simulate pressing on Anchor.

But when I use jQuery's trigger, it doesn't work (why?)

When I use "jsobj".click() func, it does work.

After reading the jQuery documentation, I don't see any reason why it shouldn't.

Help ?

PS: I'm using Chrome.

Share Improve this question edited Nov 3, 2021 at 15:33 Brian Tompsett - 汤莱恩 5,89372 gold badges61 silver badges133 bronze badges asked Jul 14, 2012 at 19:11 Royi NamirRoyi Namir 149k144 gold badges492 silver badges829 bronze badges 4
  • Did you try $(".a")[0].trigger('click') ? – Samson Commented Jul 14, 2012 at 19:14
  • 1 this will work , the question is why trigger('click') doesnt work – Royi Namir Commented Jul 14, 2012 at 19:14
  • 2 Very interesting observation indeed.. – Adi Commented Jul 14, 2012 at 19:37
  • You'll find a clearer answer here: stackoverflow./questions/13505003/… – Michael Commented Jan 9, 2017 at 19:40
Add a ment  | 

3 Answers 3

Reset to default 7

Actually $(".a").trigger('click'); triggers the click event but it doesn't mean that it'll click the link, instead it'll execute the event handler if you already have one, i.e.

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

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

The given example will trigger the click event of the a and will execute the handler (the anonymous function) that's already have been registered for that event using

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

DEMO.

because $(".a")[0] return raw JavaScript node you cannot use jQuery object methods for that.

This is because JQuery's .trigger() doesn't really trigger the native events. Try this for example in your script:

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

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

When you create a costume handler using JQuery, THEN the event will be triggered with the .trigger() method.

Update: This is quite interesting, seems to happen only with <a> tags AND with href. Check this out

发布评论

评论列表(0)

  1. 暂无评论