2010-12-29 13 views
11

Chcę otworzyć okno dialogowe interfejsu użytkownika JQuery w pozycji myszy. na czym polega problem z moim kodem?Otwieranie okna dialogowego JQuery Ui w MousePosition

<script type="text/javascript"> 

    $(document).ready(function() { 
     var x; 
     var y; 
     $(document).mousemove(function (e) { 
      x = e.pageX; 
      y = e.pageY; 
     }); 

     $("#d").dialog({ 
      autoOpen: false, 
      show: "blind", 
      hide: "explode", 
      position: [x, y] 
     }); 
     $("#c").bind("mouseover", function() { 
      $("#d").dialog('open'); // open 
     }); 


     $("#c").bind("mouseleave", function() { 
      $("#d").dialog('close'); // open 
     }); 



    }); 



</script> 

Odpowiedz

15

Aktualizacja x i y po ich przeszły (pod względem wartości) do konfiguracji oknie dialogowym nie będzie miał żadnego wpływu, ponieważ zmienne nie są związane z potem. Musisz zaktualizować bezpośrednio opcję pozycji, podobnie jak to:

$(document).mousemove(function (e) { 
    $("#d").dialog("option", { position: [e.pageX, e.pageY] }); 
}); 

You can test it out here lub wersji dużo bardziej zoptymalizowanej (ponieważ tylko pokazać ją na szczycie #c tak):

$(function() { 
    $("#d").dialog({ 
     autoOpen: false, 
     show: "blind", 
     hide: "explode" 
    }); 
    $("#c").hover(function() { 
     $("#d").dialog('open'); 
    }, function() { 
     $("#d").dialog('close'); 
    }).mousemove(function (e) { 
     $("#d").dialog("option", { position: [e.pageX+5, e.pageY+5] }); 
    }); 
}); 

You can test that version here .

9

Odpowiedź Nicka Cravera wymaga jedynie poprawy, aby pudełko zawsze znajdowało się blisko kursora.

Oś Y należy odjąć od przewijanej strony. Tak, że linia staje się:

$("#d").dialog("option", { position: [e.pageX+5, (e.pageY+5)-$(document).scrollTop()] }); 
5
$("#d").dialog(
    "option", 
    { 
     position: 
     { 
      my: 'left', 
      at: 'right', 
      of: event 
     } 
    } 
); 

próbka robocza: http://jsbin.com/okosi4

Rozwiązanie to działało lepiej dla mnie, gdy miałem długą stronę, która wymagała przewijania. Stwierdziłem, że powyższe rozwiązania nie działają dobrze w przypadku przewijania w pionie.

Zobacz więcej o position option

+0

I po „próbka robocza” Link, ale mówi, że „czas wolny podgląd wygasła” –

+0

tak ... skopiować wkleić zawartość do skrzypiec lub podobnym. –

Powiązane problemy