Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   всплывающее окно справа от курсора (https://javascript.ru/forum/events/62931-vsplyvayushhee-okno-sprava-ot-kursora.html)

greenwar 08.05.2016 00:05

всплывающее окно справа от курсора
 
всем привет
завис над задачкой
вроде простая, но отличается от того, что в гугле находится
в общем есть список ссылок, при наведении на каждую должен подниматься $('#fancybox_div'), а в нём аяксом подгружается инфа
затык на том, что я почему-то не могу через jQuery поймать текущее положение курсора, чтобы от него сместиться чуть правее
вот так ссылка выглядит:
<a href='#' onmouseover='where_is_cursor();fancybox(my_personal_setup_data,'X','Y');return false;'>ссылка</a>

where_is_cursor() это отдельная ф-я, где я пытаюсь считать координаты мыши
должна быть отдельной, потому что fancybox() получает уже готовые координаты XY
курсор находится, но с предыдущего наведения...

в общем вопрос: что надо положить во where_is_cursor() ?

и второй вопрос: у меня почему-то в fancybox() не получается высчитать опять же текущую ширину блока, пока он скрыт, там происходит:
$('#fancybox_div').show(200);
alert($('#fancybox_div').outerWidth());

alert() выдаёт старую ширину, с предыдущего наведения на ссылку
в первый раз вообще показывает 45 начальную ширину, а потом уже выдаёт 300+, но опять с предыдущего mouseover
не пойму, почему?

Cuntmann 08.05.2016 13:33

1. MouseEvent.pageX

2. Ширину блока можно было бы получить в случае, если его скрывают при помощи visibility, но я почти уверен, что там юзается display

greenwar 08.05.2016 15:57

вот если так сделать, то реальные координаты выдаёт (<a class='data_link')
$('.data_link').mouseover(function(event)
{
    event.preventDefault();
    MX = event.clientX; // положения по оси X
    MY = event.clientY; // положения по оси Y

alert(MX+' '+MY);

});


а если через <a onmouseover=where_is_cursor(), то выдаёт координаты с прошлого наведения почему-то...

Цитата:

2. Ширину блока можно было бы получить в случае, если его скрывают при помощи visibility, но я почти уверен, что там юзается display
та он и так и так получает, что visibility, что display
но оба раза он получает данные с предыдущего mouseover

при этом я ширину считаю ПОСЛЕ выхода блока, вот так:
get_ajax();
$(return_div).show(0);
alert($(return_div).outerWidth());


как вот эту конструкцию тоже повесить на event, при условии, что у каждой ссылки свои данные
fancybox(my_personal_setup_data,'X','Y');
и их надо передавать

greenwar 10.05.2016 15:15

кто-нибудь знает?

Dilettante_Pro 10.05.2016 16:19

greenwar,
get_ajax();
$(return_div).show(0);
alert($(return_div).outerWidth());

У вас параметры div определяются сразу после отправки ajax, до его завершения.
Чтобы они задавались после завершения запроса, надо перенести определение параметров в success ajax


Часовой пояс GMT +3, время: 23:55.