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
3 Answers
Reset to default 7Actually $(".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