7

Here is my code

$(".inboxfeedlist li").hover(function(e){alert('');}

This is not working for dynamically created elements, even i have use

$(".inboxfeedlist li").bind('hover',function(){})

is also not working, what's problem with code.

Wasim A.
  • 9,660
  • 22
  • 90
  • 120

8 Answers8

40

live become deprecated at jQuery 1.9. We can use on with mouseenter and mouseleave events instead:

$(document).on("mouseenter", ".save-btn", function(e) {
    $(this).css("background-image","url('ie/imgs/btn/hover-btn.png')");
    $(this).find("a").css("background-image","url('ie/imgs/btn/hover-btn-left.png')");
});

$(document).on("mouseleave", ".save-btn", function(e) {
    $(this).css("background-image","url('ie/imgs/btn/btn.png')");
    $(this).find("a").css("background-image","url('ie/imgs/btn/btn-left.png')");
});

For some reason I can't use hover with on. It simply doesn't work. But, from what I have read, hover is just an adaptation from mouseenter and mouseleave, so it is fine. (https://stackoverflow.com/a/4463384/1031340)

If you do not need to support IE6, I recommend you use :hover on your CSS (if it is a change only in CSS, how example above).

Community
  • 1
  • 1
eduardomozart
  • 1,444
  • 15
  • 14
3

try live

$(".inboxfeedlist li").live('hover',function(){});
swatkins
  • 13,530
  • 4
  • 46
  • 78
3

Use the live method:

$(".inboxfeedlist li").live('hover', function(e){alert('');});

A side note hover does take two callback functions, did you mean mouseover

Stephen
  • 18,827
  • 9
  • 60
  • 98
topek
  • 18,609
  • 3
  • 35
  • 43
  • you learn something new everyday..., still wondering what the use case for this would be? Did not have a problem yet, that would have required this. – topek Nov 01 '11 at 20:28
  • I use it for when I toggle something like in `$(".menu li").hover(function(){$(".submenu",this).toggle()})`. Because toggle depends on the current state of the element, it can be used for the hover over and the hover out. – Joseph Marikle Nov 01 '11 at 20:31
  • Why does `.live('hover' ...` works but not `.hover` on a dynamic element? – borayeris Feb 06 '14 at 00:00
  • 1
    As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers. Users of older versions of jQuery should use .delegate() in preference to .live(). https://api.jquery.com/live/ – Vlad Vinnikov Apr 11 '14 at 20:23
1

Use delegate or live to bind the events. This will make sure anything added dynamically will be bound to the event handler as well.

Sam
  • 15,336
  • 25
  • 85
  • 148
1

Sounds like you need live or delegate. Delegate is prefered

$(document.body).delegate(".inboxfeedlist li", "hover", function(){
        alert('');
});
Joseph Marikle
  • 76,418
  • 17
  • 112
  • 129
0

You could use something like this:

$(document).on('mouseover','div.cover-wrapper',function(){
    $(this).css({'border':'1px solid #000'});
});


$(document).on('mouseout','div.cover-wrapper',function(){
    $(this).css({'border':'none'});
});
display-name-is-missing
  • 4,424
  • 5
  • 28
  • 41
Sandeep Pal
  • 2,067
  • 1
  • 16
  • 14
0

Here is the use and details of these functions

http://api.jquery.com/live/

$( selector ).live( events, data, handler ); // jQuery 1.3+

$( document ).delegate( selector, events, data, handler ); // jQuery 1.4.3+

$( document ).on( events, selector, data, handler ); // jQuery 1.7+

Khandad Niazi
  • 2,326
  • 3
  • 25
  • 22
0
$('.inboxfeedlist li').live('hover', function(e) { alert(''); });

jQuery live

jQuery delegate

jbabey
  • 45,965
  • 12
  • 71
  • 94