Hej, mam taką sytuację. Dla uproszczenia powiedzmy, że mam na stronie dwie kolumny. Lewą i prawą. W lewej są jakieś elementy, które po kliknięciu, wczytują ajaxem zawartość do kolumny prawej.
I teraz tak, jeśli kliknę na element w lewej kolumnie prawym klawiszem myszy, to pokaże mi się menu kontekstowe w dobrym miejscu:
$("body").on("contextmenu", selector, function (e) {
var top = e.originalEvent.y;
var left = e.originalEvent.x;
//i inne duperele
}
Ale jeśli kliknę prawym klawiszem myszy na element w prawej kolumnie (zaczytany ajaxem), menu pokaże się jakby z dodanym offsetem od miejsca, w którym zaczyna się prawa kolumna.
Jak teraz dojść do tego offsetu? Zaznaczam, że elementy zaczytywane ajaxem mają różne struktury i coś w rodzaju:
e.targetElement.parent.parent.parent nie wchodzi w grę.
Mógłbym nadać id divovi, do którego ląduje ajax i wtedy robić tak:
var ajaxDiv = $("ajaxDiv");
var offsetX = ajaxDiv.offsetLeft;
//itd
Ale wtedy rodzi się drugie pytanie. Skąd mam wiedzieć, czy odjąć ten offset, czy nie? Innymi słowy, czy użytkownik kliknął na elementy z prawej, czy lewej kolumny?