防止文本表高亮显示

我有一个表,我允许用户“select”多行。 这一切都使用jQuery事件和一些CSS来处理,以直观地指示行被“选中”。 当用户按下shift时,可以select多行。 有时这会导致文本变得突出显示。 无论如何要防止这个?

有一个CSS3属性。

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

如果你想控制你的用户可以select或不是你的网站的一部分,你可以使用这个小小的jQuery插件 。

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

并将其用作:

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

否则,你可以在你的css文件中使用这些CSS属性:

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

上面的Cleiton的答案只是一个说明 – 代码示例似乎运作良好,但为了成为jQuery世界中的好公民,您应该在函数的末尾返回jQuery对象,以便它可以链接 – 一个简单的单行补充修正了:

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

干杯,希望这是有帮助的。

我只是删除使用Shift键进行的select。 这可能会显示一点闪烁

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

你可以尝试使用focus()函数在选定的文本 – select消失。

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

如果你的页面上有JQuery UI,只需使用

  $("element-selector").disableSelection(); 
 ::-moz-selection { /* Code for Firefox */ color: black; background: none; } ::selection { color: black; background: none; } 

http://www.w3schools.com/cssref/sel_selection.asp
实际上从try-it部分,更改值后。
注意虽然光标仍然是“我”形…