2009-08-23 10 views
39

Ich habe eine Tabelle und erlaube Benutzern, mehrere Zeilen auszuwählen. Dies alles wird mithilfe von jQuery-Ereignissen und einigen CSS-Anweisungen behandelt, um visuell anzuzeigen, dass die Zeile "ausgewählt" ist. Wenn der Benutzer die Umschalttaste drückt, können mehrere Zeilen ausgewählt werden. Manchmal wird dadurch Text hervorgehoben. Gibt es das überhaupt, um das zu verhindern?Hervorhebung der Hervorhebung von Text verhindern Tabelle

+0

mögliche Duplikate von [CSS-Regel zum Deaktivieren der Textauswahl Hervorhebung] (http://stackoverflow.com/questions/826782/css-rule-to- disable-text-selection-highlighting) – Dan

Antwort

71

Es gibt eine CSS3-Eigenschaft dafür.

#yourTable { 
    -webkit-touch-callout: none; 
    -webkit-user-select: none; 
    -khtml-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    user-select: none; 
} 
+20

Schade Internet Explorer ist es egal. Getestet in 6-8. –

+1

@NathanTaylor Nach dem googeln finden Sie ein Duplikat, wo dies bereits gelöst ist: http://stackoverflow.com/questions/826782/css-rule-to-disable-text-selection-highlighting – Dan

+0

'Validation (CSS 3.0):" moz-none "ist kein gültiger Wert für die Eigenschaft" -moz-user-select ". Tatsächlich funktionierte das nicht für Firefox, bis ich' moz-none' in 'none' änderte. – Nolonar

1

Sie können versuchen, mit Fokus() Funktion auf den ausgewählten Text - die Auswahl verschwindet.

$('#someEl').focus(); 
30

Wenn Sie die Kontrolle haben wollen, wenn die Benutzer auswählen können oder nicht Teile von Ihnen Website, können Sie diese little jQuery plugin verwenden.

jQuery.fn.extend({ 
     disableSelection : function() { 
       return this.each(function() { 
         this.onselectstart = function() { return false; }; 
         this.unselectable = "on"; 
         jQuery(this).css('user-select', 'none'); 
         jQuery(this).css('-o-user-select', 'none'); 
         jQuery(this).css('-moz-user-select', 'none'); 
         jQuery(this).css('-khtml-user-select', 'none'); 
         jQuery(this).css('-webkit-user-select', 'none'); 
       }); 
     } 
}); 

und verwenden Sie es als:

// disable selection on #theDiv object 
$('#theDiv').disableSelection(); 

Andernfalls können Sie nur diese CSS-Attribute in Ihrem CSS-Datei als:

#theDiv 
{ 
    -webkit-user-select: none; 
    -khtml-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    user-select: none; 
} 
3

Ich entferne einfach die Auswahl, die mit der Umschalttaste vorgenommen wird. Dies könnte ein wenig Flimmern zeigen obwohl

if (event.shiftKey) { 
    window.getSelection().removeAllRanges() 
} 
13

Nur ein Hinweis auf die Antwort von Cleiton oben - das Codebeispiel gut zu funktionieren scheint, aber um ein guter Bürger in der jQuery Welt zu sein, sollten Sie wieder die jQuery Objekt am Ende der Funktion, so dass es verkettbar - eine einfache einzeilige zusätzlich fixiert, dass bis:

jQuery.fn.extend({ 
    disableSelection : function() { 
      this.each(function() { 
        this.onselectstart = function() { return false; }; 
        this.unselectable = "on"; 
        jQuery(this).css('-moz-user-select', 'none'); 
      }); 
      return this; 
    } 
}); 

Cheers, hoffe, das ist hilfreich.

+2

Er tut dies mit "return this.each (function() {..." – frontendbeauty

1

Wenn Sie JQuery UI auf Ihren Seiten haben, benutzen Sie einfach

$("element-selector").disableSelection(); 
+1

Dies ist undokumentiert aber sollte funktionieren, wenn Sie jQuery UI Kern haben –

+0

gute Sache über diese Lösung ist, dass es auch für IE und replizieren die Funktionalität von Lösungen, die bereits erwähnt wurden, wenn Sie sich den Code ansehen: – sksallaj

+1

Beachten Sie, dass disableSelection() in jQuery UI nicht mehr unterstützt wird 1.9 – mar10

0
::-moz-selection { /* Code for Firefox */ 
    color: black; 
    background: none; 
} 

::selection { 
    color: black; 
    background: none; 
} 

von http://www.w3schools.com/cssref/sel_selection.asp
tatsächlich aus dem try-it Abschnitt, nachdem die Werte zu ändern.
Beachten Sie jedoch, dass der Cursor immer noch 'ich' geformt ist ...

+0

Hinweis: Das Pseudoelement :: selection wurde für CSS-Selektoren der Stufe 3 entworfen, aber vor dem Empfehlungsstatus entfernt Momentan befindet sich das Pseudo-Element :: selection in keiner Spezifikation (es kann jedoch zukünftigen CSS-Spezifikationen hinzugefügt werden). – luk2302