当前位置:  开发笔记 > 编程语言 > 正文

如何使用jQuery禁用文本选择?

如何解决《如何使用jQuery禁用文本选择?》经验,为你挑选了8个好方法。

jQuery或jQuery-UI是否具有禁用给定文档元素的文本选择的任何功能?



1> SLaks..:

在jQuery 1.8中,可以按如下方式完成:

(function($){
    $.fn.disableSelection = function() {
        return this
                 .attr('unselectable', 'on')
                 .css('user-select', 'none')
                 .on('selectstart', false);
    };
})(jQuery);


对于那些说"只是不"禁用文本选择的人(或其他任何关于此事的东西),请稍微打开你的思想.很多时候人们出于审美原因而禁用它,例如双击带有文本的标签时避免文本选择等.所以要么回答问题,要么提供一个实际的反点,并指明你所说的否定,不要不要只是以一般的方式抓住这个想法.
@Omar:我很清楚这一点.
谢谢你.我正在处理一个拖动滑块,需要一种在此过程中不会选择文本的方法.
@Bryce:就是不要.http://blog.slaks.net/2010/12/on-copy-prevention-in-html-part-2.html http://blog.slaks.net/2010/12/on-copy-prevention-in -html部分,3.html

2> Damien..:

如果你使用jQuery UI,有一个方法,但它只能处理鼠标选择(即CTRL+ A仍在工作):

$('.your-element').disableSelection(); // deprecated in jQuery UI 1.9

如果您不想使用jQuery UI,代码非常简单:

$(el).attr('unselectable','on')
     .css({'-moz-user-select':'-moz-none',
           '-moz-user-select':'none',
           '-o-user-select':'none',
           '-khtml-user-select':'none', /* you could also put this in a class */
           '-webkit-user-select':'none',/* and add the CSS class here instead */
           '-ms-user-select':'none',
           'user-select':'none'
     }).bind('selectstart', function(){ return false; });


用jquery ui为第二个解决方案+1
请注意,在jQuery UI 1.9中不推荐使用disableSelection()

3> Plynx..:

我发现这个答案(防止文本表的突出显示)最有帮助,也许它可以与另一种提供IE兼容性的方式相结合.

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


总是欣赏CSS的方式而不是一般使用jQuery或JS.就像jQuery动画和CSS过渡一样,浏览器内置的方式总是最好,最有效.

4> 小智..:

这是断路器选择的更全面的解决方案,以及一些热键的取消(例如Ctrl+ aCtrl+ c.测试: Cmd + aCmd+ c)

(function($){

  $.fn.ctrlCmd = function(key) {

    var allowDefault = true;

    if (!$.isArray(key)) {
       key = [key];
    }

    return this.keydown(function(e) {
        for (var i = 0, l = key.length; i < l; i++) {
            if(e.keyCode === key[i].toUpperCase().charCodeAt(0) && e.metaKey) {
                allowDefault = false;
            }
        };
        return allowDefault;
    });
};


$.fn.disableSelection = function() {

    this.ctrlCmd(['a', 'c']);

    return this.attr('unselectable', 'on')
               .css({'-moz-user-select':'-moz-none',
                     '-moz-user-select':'none',
                     '-o-user-select':'none',
                     '-khtml-user-select':'none',
                     '-webkit-user-select':'none',
                     '-ms-user-select':'none',
                     'user-select':'none'})
               .bind('selectstart', false);
};

})(jQuery);

并调用示例:

$(':not(input,select,textarea)').disableSelection();

jsfiddle.net/JBxnQ/

这对于旧版本的FireFox来说也是不够的(我不知道哪个).如果所有这些都不起作用,请添加以下内容:

.on('mousedown', false)


为什么要两次调用`attr('unselectable','on')?这是一个错字还是有用的?

5> 小智..:

以下将禁用所有常见浏览器(IE,Chrome,Mozilla,Opera和Safari)中所有类'item'的选择:

$(".item")
        .attr('unselectable', 'on')
        .css({
            'user-select': 'none',
            'MozUserSelect': 'none'
        })
        .on('selectstart', false)
        .on('mousedown', false);



6> 小智..:
        $(document).ready(function(){
            $("body").css("-webkit-user-select","none");
            $("body").css("-moz-user-select","none");
            $("body").css("-ms-user-select","none");
            $("body").css("-o-user-select","none");
            $("body").css("user-select","none");
        });



7> Code Spy..:

这可以使用JavaScript轻松完成.这适用于所有浏览器


调用此功能



这个答案在2013年已经过时了

8> Zach Barham..:

这其实很简单.要禁用文本选择(还单击+拖动文本(例如Chrome中的链接)),只需使用以下jQuery代码:

$('body, html').mousedown(function(event) {
    event.preventDefault();
});

所有这一切都是为了防止mousedown()bodyhtml标签中单击鼠标()时发生默认设置.你可以很容易只是通过改变文本之间的两个引号(如改变而改变的元素$('body, html'),以$('#myUnselectableDiv')使myUnselectableDivDIV是,好了,不可选.

一个快速的片段向您展示/证明:

$('#no-select').mousedown(function(event) {
  event.preventDefault();
});

I bet you can't select this text, or drag this link, 

but that you can select this text, and drag this link!
推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有