2014-10-11 9 views
5

Voglio che il mio dropdown di bootstrap sia posizionato nella posizione del mouse. Per qualche ragione la pagina X e la pagina Y sono sbagliate. Per correggere la posizione devo aggiungere o sottrarre da xe y. MA, se poi eseguo lo zoom avanti o indietro, X e Y sono di nuovo errati. Ho provato tutto là fuori. Questo è uno di loro ..menu di avvio a discesa di avvio JavaScript nella posizione del mouse

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 }); 
} 

Cosa devo fare per ottenere corretta posizione X e Y con diverse risoluzioni ?

Grazie

risposta

3

Sembra che il caso non è stato chiamato

Questo funziona:

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

Grazie. Ho trovato un altro problema. Il mio contenitore ha margine: auto che centra tutto il contenuto. Per qualche motivo questo interferisce con le coordinate della posizione del mouse, (fornisce cavi errati e posizioni diverse durante lo zoom). Qualsiasi modo per aggirare questo o sono costretto a non centrare il mio contenuto (lol); D? – Reft

+0

Va bene, ho capito. Avevo un elemento padre con margine: auto, che centrava il sito web completo. Ho dovuto prenderlo in considerazione e aggiungerlo alla mia X e Y. Ecco una buona spiegazione: http://stackoverflow.com/questions/16479179/js-pagex-and-pagey-take-the-coordinate -plus-the-margin-di-relativa posizione-div – Reft

Problemi correlati