我有一个表格,允许用户“选择”多行。这一切都是使用jQuery事件处理和一些CSS视觉指示当前行已被“选择”。当用户按下shift键时,可以选择多个行。有时这会导致文本变为高亮显示。是否有任何方法可以防止这种情况发生?
我有一个表格,允许用户“选择”多行。这一切都是使用jQuery事件处理和一些CSS视觉指示当前行已被“选择”。当用户按下shift键时,可以选择多个行。有时这会导致文本变为高亮显示。是否有任何方法可以防止这种情况发生?
有一个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;
}
如果你想要控制用户何时可以选择或不选择你网站的某些部分,你可以使用这个小型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键所做的选择。这可能会显示一些闪烁。
if (event.shiftKey) {
window.getSelection().removeAllRanges()
}
$('#someEl').focus();
$("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
实际上来自尝试部分,在更改值之后。
请注意,光标仍然是“I”形状...