如何在棘手的情况下禁用表格上的文本选择?

发布于 2024-10-31 07:18:56 字数 468 浏览 4 评论 0原文

我有一个基本的表格,如下所示:

<table>
    <tbody>
        <tr>
            <td>Column 1</td>
            <td>Column 2</td>
        </tr>
    </tbody>
</table>

在行上,我有一个带有 jQ​​uery 的双击功能:

$('tr').live('dblclick',function(){
    dosomething();
    return false;
});

我还有一个名为 tablednd 的插件,它在行上使用 mousedown/up 函数。 双击会导致单元格上的文本选择。

我怎样才能防止这种情况发生?

I have a basic table, like this:

<table>
    <tbody>
        <tr>
            <td>Column 1</td>
            <td>Column 2</td>
        </tr>
    </tbody>
</table>

On the rows I have a double click function with jQuery:

$('tr').live('dblclick',function(){
    dosomething();
    return false;
});

I also have a plugin called tablednd that uses mousedown/up function on the rows.
The double clicking causes text selection on the cells.

How can I prevent this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

披肩女神 2024-11-07 07:18:56

您不能使用 select() 事件,因为它仅限于输入元素。

相反,请在 selectstart 事件上尝试 preventDefault()...

$('tr').bind('selectstart', function(event) {
    event.preventDefault();
});

jsFiddle

或者,您可以使用 CSS...

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

You can't use select() event because it is limited to input elements.

Instead, try preventDefault() on the selectstart event...

$('tr').bind('selectstart', function(event) {
    event.preventDefault();
});

jsFiddle.

Alternatively, you can use CSS...

tr {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}
橪书 2024-11-07 07:18:56

尝试更改

$('tr').live('dblclick',function(){
    dosomething();
    return false;
});

$('tr').live('dblclick',function(e){
    e.preventDefault();
    dosomething();
    return false;
});

设置应该可以防止双击执行浏览器默认执行的任何操作。您应该在所有浏览器中测试此代码,但不确定它是否适用于所有浏览器。

Try changing

$('tr').live('dblclick',function(){
    dosomething();
    return false;
});

to

$('tr').live('dblclick',function(e){
    e.preventDefault();
    dosomething();
    return false;
});

this should prevent the doubleclick from doing anything the browser will do at default. You should test this code in all browsers though, not sure if it will work everywhere.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文