javascript - Jquery 1.9.1 - move created element based on cursor position when hovering -


i need move image being created when hover on thumb while moving mouse on thumb. how can this? have function (it working):

var body = $('body'), slike = $('.oglas_slika');   function image_hover(url){     var image = '<img class="oglas_slika_velika"  src="' + url  +'">';     return image; }  slike.hover(     function(e){         body.append( image_hover( $(this).data('url') ) );         $(".oglas_slika_velika")             .css("top", (e.pagey) + "px")             .css("left", (e.pagex) + "px")             .fadein("slow");     },     function(){         body.find('.oglas_slika_velika').remove();     } ); 

i tried 1 getting flickering (image appearing @ random places on page while moving mouse ):

var body = $('body'), slike = $('.oglas_slika');  function image_hover(url){     var image = '<img class="oglas_slika_velika"  src="' + url  +'">';     return image; }  slike.hover(     function(){         body.append( image_hover( $(this).data('url') ) );         $(this).on('mousemove', function(e){             $(".oglas_slika_velika")             .css("top", (e.pagey) + "px")             .css("left", (e.pagex) + "px")             .fadein("slow");             return false;         });     },     function(){         body.find('.oglas_slika_velika').remove();     } ); 

jsfiddle demo

the flickering result of element created causing mouseout section of hover called. removing image element, , once element removed, mouseover section of hover called, , image recreated, along call fadein. animation queue overloaded in process , throws error (uncaught rangeerror: maximum call stack size exceeded) cause extremely inconsistent results.

the remedy this, should keep track of mouseover area object:

var sp = {}; sp.top = slike.position().top; sp.left = slike.position().left; sp.right = sp.left + slike.width(); sp.bottom = sp.top + slike.height(); 

and keep track of image sizes:

var w; var h; 

which filled once appended

body.append( image_hover( ) ); w = $(".oglas_slika_velika").width(); h = $(".oglas_slika_velika").height(); 

next ensure mouse cursor mousing out of hover region checking collision between created image , cursor

if( e.pagey + h > sp.bottom || e.pagey - h < sp.top){  body.find('.oglas_slika_velika').remove(); }else{  if( e.pagex + w > sp.right || e.pagex - w < sp.left ){   body.find('.oglas_slika_velika').remove();  } } 

although takes more work, lot more precise , less prone error. allow image directly track mouse instead of being pushed offset.

if not important have image directly @ place of mouse, @luigi de rosa's answer work , require less effort.


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -