Chcę, aby mój zestaw startowy z listy rozwijanej został umieszczony na pozycji myszy. Z jakiegoś powodu strona pageX i pageY są nieprawidłowe. Aby poprawić pozycję, muszę dodać lub odjąć od x i y. ALE, jeśli powiększę lub pomniejszę, X i Y znowu będą niepoprawne. Próbowałem wszystkiego. Jest to jeden z nich ..JavaScript bootstrap otwórz menu rozwijane na pozycji myszy
HTML:
<div class="dropdown">
<div id="menuitems" onclick="setposition(event)" class="dropdown-toggle" data-toggle="dropdown">
Menu
</div>
<ul class="dropdown-menu" id="xxx" role="menu" aria-labelledby="menuitems">
<li role="presentation"><a role="menuitem" tabindex="-1" href="#"</i>Link 1</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="#"</i>Link 2</a></li>
</ul>
</div>
Script
function setposition(e) {
var bodyOffsets = document.body.getBoundingClientRect();
tempX = e.pageX - bodyOffsets.left;
tempY = e.pageY;
$("#xxx").css({ 'top': tempY, 'left': tempX });
}
Co muszę zrobić, aby uzyskać prawidłową pozycję X i Y o różnych rozdzielczościach ?
Dziękuję
Dzięki. Znalazłem inny problem. Mój kontener ma marżę: auto, które centralizuje całą zawartość. Z jakiegoś powodu zakłóca to współrzędne pozycji myszy (podaje nieprawidłowe linki i różne pozycje podczas powiększania). Jakikolwiek sposób ominąć to, czy jestem zmuszony do niecentralizowania moich treści (lol); D? – Reft
W porządku, wymyśliłem to. Miałem element nadrzędny, który miał margines: auto, który wyśrodkował całą witrynę. Musiałem wziąć to pod uwagę i dodać go do moich X i Y. Oto dobre wyjaśnienie: http://stackoverflow.com/questions/16479179/js-pagex-and-pagey-take-the-coordinate -plus-a-margin-of-relative-position-div – Reft