How to make jQuery 1.7 .on() hover?
I'm having a problem with dynamically created elements on hover state. When I hover on newly created html element, it doesn't work.
Here's my HTML code:
<button id="create">create new button</button>
<button class="hover">hover me</button>
<div></div>
jQuery:
var createBtn = $("#create");
createBtn.click(function() {
$('div').append('<button class="hover">new hover button</button');
return false;
});
$('.hover').hover(function() {
alert('you hovered the button!');
}, function() {
alert('you removed the hover from button!');
});
I even tried this code:
$('.hover').on({
mouseenter : function() {
alert('you hovered the button!');
},
mouseleave : function() {
alert('you removed the hover from button!');
}
});
as shown here http://api.jquery.com/on/, but still no luck. Here's also demo: http://jsfiddle.net/BQ2FA/
Solution 1:
This isn't the correct syntax.
Use this to listen to your events for dynamically created '.hover' elements :
$(document).on('mouseenter', '.hover', function(){
alert('you hovered the button!');
}).on('mouseleave', '.hover', function() {
alert('you removed the hover from button!');
});
Solution 2:
You are using .on
for direct binding, you need to use it for delegation:
$('div').on({
mouseenter: function() {
alert('you hovered the button!');
},
mouseleave: function() {
alert('you removed the hover from button!');
}
}, ".hover");
http://jsfiddle.net/BQ2FA/2/