双击而不选择内容

Double-click without selecting content

本文关键字:选择 双击      更新时间:2023-09-26
双击

<td>时,如何防止选择<td>的内容?

如果我在双击后手动单击页面中的任意位置,则不会选择内容(通过双击选择)。

但是,如果我以编程方式触发该单击,则内容实际上保持选中状态......

$(".tableCell").dblclick(function(){
    $("body").click();
});

这给出了相同的结果:

$(".tableCell").dblclick(function(){
    return false;
});

小提琴:http://jsfiddle.net/eYpY6/1/

用这个SO答案:如何使用CSS禁用文本选择突出显示?

您可以使用它:

-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;

在 CSS 规则中,请参阅 小提琴:http://jsfiddle.net/KyleMuir/eYpY6/2/

无需 JS :)

希望这有帮助。

借用另一个答案:双击后阻止文本选择

$(document).ready(function(){
$(".tableCell").dblclick(function(){
clearSelection();
});
});
function clearSelection() {
if(document.selection && document.selection.empty) {
    document.selection.empty();
} else if(window.getSelection) {
    var sel = window.getSelection();
    sel.removeAllRanges();
}
}

在这里小提琴:http://jsfiddle.net/eYpY6/3/

这里有点晚了,但我想我会分享这个答案。您可以禁用双击时的文本选择,仅使用我在此 JSFiddle 中为这个 SO 问题编写的代码版本,该问题要求 CSS(但我找不到答案,所以给出了一个 Javascript 答案,以防 OP 可以接受)。基本上,代码要求在双击时更改单击历史记录,然后以编程方式重新选择以前选择的内容。这是使用 selectionStartselectionEnd 实现的。我相信有一个更优雅的解决方案,但这就是我现在所拥有的。