2012-08-10 12 views
22

I Bootstrap des Tooltips über Tasten auf meiner Website verwende aber wenn es auf einem mobilen Gerät angezeigt werden diese Tooltips auf dem ersten Klick ausgelöst, das heißt ich auf die Schaltfläche klicken, um das Doppelte haben. Ich möchte verhindern, dass diese auf mobilen Geräten angezeigt werden, und habe versucht, Medienabfragen zu verwenden. Mein Code hat:Hiding Bootstrap Tooltips auf Mobile Media Queries mit

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

Dieser Tooltip von der Anzeige stoppt, aber ich habe noch zweimal zu klicken Sie auf die Taste, um zu funktionieren. Kann ich irgendwie verhindern, dass diese Tooltips mit Medienabfragen ausgelöst werden?

+0

Können Sie nicht die JS berühren überhaupt? Ein Weg wäre, zwei Tasten zu verwenden: eine, die auf kleinen Auflösungen versteckt ist, und die andere ohne Tooltip für kleine Bildschirme. Ist das vorstellbar? – Sherbrow

Antwort

9

Tooltips zu aktivieren, müssen Sie so etwas wie $('#example').tooltip(options) irgendwo in Ihrem Code hinzufügen.

Jetzt, um dies für mobile Geräte zu deaktivieren, können Sie JavaScript window.matchMedia verwenden, um eine Medienabfrage in JavaScript anzugeben und somit Tooltips für kleinere Geräte nicht zu aktivieren.

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

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

MatchMedia wird in mobilen Safari 5 und höher (neben anderen Browsern) unterstützt.

+2

Ich hatte das gleiche Problem und dies behoben, danke.Nur eine kleine Änderung, ist, dass ich für nicht-mobile/nicht-Tablet aktiviert, was bedeutet, dass ich 'if (window.matchMedia (" (min-width: 991px) ")) .matches) 'stattdessen. – umezo

+0

Ersetzen Sie die 'max-width' -Eigenschaft mit' min-width: 768px', um die Tooltip auf allen Geräten außer Smartphone (nach dem Bootstrap 3-Standard) –

2

ich das gleiche Problem erlebt, und ich fand die Lösung in https://groups.google.com/forum/#!topic/twitter-bootstrap/Mc2C41QXdnI

Matchmedia Unterstützung für IE fehlt (kein Thema auf Handy), sondern auch Android 2.2/2.3; http://caniuse.com/matchmedia

Es ist auch möglich, nur window.innerWidth zu verwenden; und prüfen, ob gegen die gleichen Werte, so etwas wie:

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

]

Und dann können Sie das gleiche tun;

 

    if (! isMobile) { 
     initTooltip(); 
    } 

+0

mit mehr als ein paar Tooltipps auf einer Seite zu aktivieren, kann dies zu Speicherlecks führen weil Sie Objekte immer wieder neu initialisieren, die möglicherweise nicht sein müssen. Sei vorsichtig damit. –

15

Ich habe es anders erreicht; Mobile und andere Geräte touch aktiviert, so habe ich gecheckt, ob es Touch-Gerät ist oder nicht.

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

nun prüfen, ob es nicht ein touch device ist die Tooltip auslösen:

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

Das funktioniert. Wenn die QuickInfo für die Anwendung verwendet wird, verwenden Sie stattdessen: function isTouchDevice() { return true == ("ontouchstart" im Fenster || window.DocumentTouch && Dokumenteninstanz von DocumentTouch); } if (isTouchDevice() === false) { jQuery (Funktion (e) {e ("a"). Tooltip ({html: true, container: "body"})}); } – user2513846

10

Verwenden Sie einfach die wichtigen Flagge, da die Tooltip Position Inline gestylt!.

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

Dies ist die einfachste Lösung. Warum hat Bootstrap das nicht standardmäßig eingebaut? Scheint so, als würde diese Art von Tooltip auf Mobilgeräten nicht weit verbreitet sein. – erier

+0

@erier das ist nicht eingebaut, weil auf dem Handy haben Sie keine Maus Hover. – TotPeRo

1

Der einfachste Weg ist nativer Bootstrap Klasse versteckten xs und Tooltips auf mobilen Bildschirmen zeigen, nicht zu addieren.

Beispiel:

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

+0

Aber das Element wird auch nicht angezeigt, möchte nur QuickInfos abschalten, nicht das Element verstecken, das sie verursacht. – DiamondDrake

+0

@RickeyWard Sie können ein anderes Tag für diese Angelegenheit setzen, mit der inversen Logik, wie '' Auch Sie könnten füge 'hidden-sm' zu @ pdolinajs Antwort hinzu. ** Edit: ** Lass uns die Frage vergessen ist über Media-Abfragen hehe – aesede

Verwandte Themen