Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery: trigger a hover event from another element

When you hover over one <div>, I want an <a> on a separate part of the page to be "hovered" on also.

<div class="initiator"> </div> <div>    <a class="receiver href="#">Touch the div and I get hovered!</a> </div> 

I've tried this jQuery, but it doesn't trigger the <a>'s hover CSS.

$(".initiator").hover(function(){    $(".receiver").hover();    console.log("div was hovered"); }); 
like image 449
Don P Avatar asked Nov 10 '12 19:11

Don P


People also ask

How to trigger hover event in jQuery?

jQuery mouseover() MethodThe mouseover() method triggers the mouseover event, or attaches a function to run when a mouseover event occurs. Note: Unlike the mouseenter event, the mouseover event triggers if a mouse pointer enters any child elements as well as the selected element.

How to use mouseover and mouseout in jQuery?

The mouseout() method triggers the mouseout event, or attaches a function to run when a mouseout event occurs. Note: Unlike the mouseleave event, the mouseout event is triggered if a mouse pointer leaves any child elements as well as the selected element.

Is hover deprecated in jQuery?

hover() is deprecated #66.

Can you use hover on a div?

You can apply :hover styles to any renderable element on a page. IE6 only supports that pseudo-class on links though.


Video Answer


2 Answers

Try this:

$('.initiator').on('mouseenter mouseleave', function(e) {     $('.receiver').trigger(e.type); }) 

It will apply the same triggers for the receiver as the initiator receives for both mouseenter and mouseleave. Note that:

.hover(over, out)  

is just a high-level variant of:

.on('mouseenter', over).on('mouseleave', out) 

so using that information you can be more precise when binding and triggering mouse events.

As noted in the comment, you can also use:

$('.initiator').hover(function(e) {     $('.receiver').trigger(e.type); }) 

There are lots more to read here: http://api.jquery.com/hover/

like image 66
David Hellsing Avatar answered Sep 17 '22 09:09

David Hellsing


You could do something like-:

$(".initiator").hover(function(){    $(".receiver").addClass('hover');    console.log("div was hovered"); }, function(){    $(".receiver").removeClass('hover'); }); 

And now you can have a class that holds the css rules.

like image 37
Andreas Avatar answered Sep 17 '22 09:09

Andreas