简体   繁体   中英

jQuery trigger click vs click ()?

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.

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, ie

$(".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.

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM