2012-08-10 9 views
22

Sto usando i suggerimenti Bootstrap sui pulsanti del mio sito ma quando vengono visualizzati su un dispositivo mobile, questi suggerimenti vengono attivati ​​al primo clic, ovvero devo fare doppio clic sul pulsante. Voglio impedire che vengano visualizzati sui dispositivi mobili e ho provato a utilizzare le query multimediali per farlo. Il mio codice è stato:Nascondere i suggerimenti Bootstrap sul cellulare utilizzando le query dei supporti

@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) 
{ 
.tooltip 
{ 
    display: none; 
} 
} 

Questo arresta il tooltip di visualizzare, ma ho ancora necessario fare clic due volte per ottenere il pulsante di funzionare. C'è un modo per impedire l'attivazione di questi tooltip usando le query multimediali?

+0

Non puoi toccare il JS a tutti? Un modo sarebbe utilizzare 2 pulsanti: uno nascosto su risoluzioni ridotte e l'altro senza tooltip per schermi piccoli. È concepibile? – Sherbrow

risposta

9

Per abilitare le descrizioni comandi, è necessario aggiungere qualcosa come $('#example').tooltip(options) da qualche parte nel codice.

Ora, per disabilitare questo dispositivo per dispositivi mobili, è possibile utilizzare JavaScript window.matchMedia per specificare una query multimediale in JavaScript e quindi non abilitare le descrizioni comandi per dispositivi più piccoli.

if (!window.matchMedia || (window.matchMedia("(max-width: 767px)").matches)) { 

    // enable tooltips 
    $('#example').tooltip(); 
} 

MatchMedia è supportato in mobile Safari 5 e versioni successive (tra gli altri browser).

+2

Ho avuto lo stesso problema e questo l'ha risolto, grazie. Solo una piccola modifica, è che ho abilitato per non-mobile/non-tablet, nel senso che ho usato 'if (window.matchMedia (" (min-width: 991px) ") .matches) invece. – umezo

+0

Sostituisci la proprietà 'max-width' con' min-width: 768px', per abilitare il suggerimento su tutti i dispositivi ad eccezione dello smartphone (seguendo lo standard Bootstrap 3) –

2

stavo sperimentando lo stesso problema, e ho trovato la soluzione in https://groups.google.com/forum/#!topic/twitter-bootstrap/Mc2C41QXdnI

Matchmedia manca il supporto per IE (non è un problema sul cellulare), ma anche Android 2.2/2.3; http://caniuse.com/matchmedia

È anche possibile utilizzare window.innerWidth; e controllare che contro gli stessi valori, qualcosa di simile:

var isMobile; 
var isTablet; 
var isDesktop; 

function detectScreen(){ 
    innerW = window.innerWidth; 
     isDesktop = false; 
     isTablet = false; 
     isMobile = false; 
     if(innerW >= 768 && innerW <= 979){ 
      isTablet = true; 
     }else if(innerW > 979){ 
      isDesktop = true; 
     }else{ 
      isMobile = true; 
     } 
     return innerW; 
} 

$(document).ready(function($) { 
    detectScreen(); 

    $(window).resize(function() { 
     detectScreen(); 
    }); 
} 

]

E poi si può fare la stessa cosa;

 

    if (! isMobile) { 
     initTooltip(); 
    } 

+0

con più di qualche suggerimento su una pagina, questo può portare a perdite di memoria perché stai reinizializzando gli oggetti più e più volte che potrebbe non essere necessario. Stai attento a questo. –

15

L'ho raggiunto in modo diverso; Mobile e altri dispositivi sono abilitati touch, quindi ho controllato se si tratta di dispositivo touch o no.

function isTouchDevice(){ 
    return true == ("ontouchstart" in window || window.DocumentTouch && document instanceof DocumentTouch); 
} 

Ora, verificare se non è un touch device per attivare il tooltip:

if(isTouchDevice()===false) { 
    $("[rel='tooltip']").tooltip(); 
} 
+1

Questo funziona. Se invece il tooltip è designato per l'uso di questo: function isTouchDevice() { return true == ("ontouchstart" nella finestra || window.DocumentTouch && document instanceof DocumentTouch); } if (isTouchDevice() === false) { jQuery (function (e) {e ("a"). Tooltip ({html: true, container: "body"})}); } – user2513846

10

basta usare la bandiera importante in quanto la posizione tooltip è in stile in linea!.

@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) { 
    .tooltip { 
     display: none !important; 
    } 
} 
+0

Questa è la soluzione più semplice. Perché bootstrap non ha questo integrato per impostazione predefinita? Sembra che questo tipo di suggerimento non sarebbe ampiamente utilizzato su dispositivi mobili. – erier

+0

@erier questo non è integrato perché sul cellulare non si ha il passaggio del mouse. – TotPeRo

1

Il modo più semplice è quello di aggiungere classe Bootstrap nativo hidden-xs e suggerimenti non verranno visualizzati su schermi mobili.

Esempio:

<span title="Your Tooltip Text" data-toggle="tooltip" data-placement="right" aria-hidden="true" class="glyphicon glyphicon-info-sign hidden-xs"></span>

+0

Ma l'elemento non viene visualizzato, è sufficiente disattivare i suggerimenti degli strumenti, non nascondere l'elemento che li causa. – DiamondDrake

+0

@RickeyWard puoi inserire un altro tag, usando la logica inversa, come '' Anche tu potresti aggiungi 'hidden-sm' alla risposta di @ pdolinaj. ** Modifica: ** dimentichiamo che la domanda riguarda le query sui media hehe – aesede

Problemi correlati