I\'m learning and using jQuery and want to display a delete icon for some elements.
I have an outer main div, which contains number of wrappers for elements. Inside
You can apply style on the jQuery event onmouseover and onmouseout. When the user hovers over the menu this event will trigger there you can set effects.
<style type="text/css">
.menu {
background-color: #CDDC39;
list-style: none;
margin: 100px;
padding: 0;
width: 10em;
}
.menu li {
margin: 0;
padding: 5px;
}
.menu a {
color: #333;
}
</style>
<ul class="menu">
<li onmouseover="this.style.backgroundColor='#F44336';" onmouseout="this.style.backgroundColor='transparent';" style="background-color: transparent;">
<a href="http://www.infinetsoft.com/">learn dot net skills</a>
</li>
<li onmouseover="this.style.backgroundColor='#F44336';" onmouseout="this.style.backgroundColor='transparent';" style="background-color: transparent;">
<a href="http://www.infinetsoft.com/htmltry">Work out html</a>
</li>
<li onmouseover="this.style.backgroundColor='#F44336';" onmouseout="this.style.backgroundColor='transparent';" style="background-color: transparent;">
<a href="http://www.infinetsoft.com/Category/JQuery/9/1">jQuery tutorials</a>
</li>
</ul>
for more details
have you tried using mouseenter
and mouseleave
events instead?
Two options for you:
:hover
pseudo-class (but only if you don't have to support IE6)mouseenter
and mouseleave
events:hover
pseudo-classYou can make the browser do all the work if you don't need IE6 support, by using the :hover pseudo-class:
/* Don't show `child` elements inside `parent` elements...*/
parent child {
display: none;
}
/* ...unless the `parent` element is being hovered over */
parent:hover child {
display: block; /* or inline-block or whatever */
}
Live example
However, IE6 doesn't support the :hover
pseudo-class except on a
elements. IE7+ and all recent other browsers do.
mouseenter
and mouseleave
eventsIf CSS doesn't do it for you, you're looking for the mouseenter
and mouseleave
events, which are IE-specific but emulated by jQuery on all other browsers. jQuery even has a convenient function, hover, for hooking up handlers to both events so you can readily accomplish what you're looking to do.
$(...your parent element...).hover(
function() {
// Called when the mouse enters the element
},
function() {
// Called when the mouse leaves the element
}
);
Here's a complete live example:
HTML:
<div>Hover over me <span class='del'>[X]</span></div>
<div>And me <span class='del'>[X]</span></div>
<div>And me <span class='del'>[X]</span></div>
JavaScript using jQuery:
$('div').hover(
function() {
$(this).find('span.del').show();
},
function() {
$(this).find('span.del').hide();
}
);
The reason you had trouble with mouseover
and mouseout
is that they bubble, and so your mouseout
handler on your parent element was seeing the bubbled mouseout
from the underlying element when your mouse moved into the delete element. mouseenter
and mouseleave
don't bubble, and so they don't have that problem.