2014-10-11 15 views
5

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ę

Odpowiedz

3

Wydaje się, że na razie nie został powołany

to działa:

Bootply: http://www.bootply.com/pEFhaLWTht

JS:

function setposition(e) { 
    var bodyOffsets = document.body.getBoundingClientRect(); 
    tempX = e.pageX - bodyOffsets.left; 
    tempY = e.pageY; 
    console.log(tempX); 

    $("#xxx").css({ 'top': tempY, 'left': tempX }); 
} 

$('#menuitems').on('click', function(e){ 
    setposition(e); 
}); 

HTML:

<div class="dropdown"> 
    <div id="menuitems" 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> 
+0

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

+0

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

Powiązane problemy