如何将JQuery函数应用于除某些元素之外的所有元素?

发布于 2024-09-28 17:12:28 字数 855 浏览 2 评论 0原文

我有点被这个问题困住了。我有一个 web 应用程序,我在其中使用简单的 JQuery 插件:

$.extend($.fn.disableTextSelect = function() {
    return this.each(function(){
        if($.browser.mozilla){//Firefox
            $(this).css('MozUserSelect','none');
        }else if($.browser.msie){//IE
            $(this).bind('selectstart',function(){return false;});
        }else if ($.browser.webkit) { // chrome, webkit
          $(this).css('webkitUserSelect','none');
          this.onselectstart = function () { return false; };
        }else{//Opera, etc.
            $(this).mousedown(function(){return false;});
        }
    });
});

该插件通常会禁用所有浏览器上的鼠标文本选择。我在 #desktop 元素上调用它,它基本上是主要包装器:

$('#desktop').disableTextSelect();

我使用它,因为它禁用 #desktop 内所有元素上的鼠标文本选择。但是,#desktop 中有一些元素,我希望它们具有正常的文本选择行为。是否有一些简单的方法来实现代码,这将打破全局规则?

I am kind of stuck on this one. I have webapp where I use simple JQuery plugin:

$.extend($.fn.disableTextSelect = function() {
    return this.each(function(){
        if($.browser.mozilla){//Firefox
            $(this).css('MozUserSelect','none');
        }else if($.browser.msie){//IE
            $(this).bind('selectstart',function(){return false;});
        }else if ($.browser.webkit) { // chrome, webkit
          $(this).css('webkitUserSelect','none');
          this.onselectstart = function () { return false; };
        }else{//Opera, etc.
            $(this).mousedown(function(){return false;});
        }
    });
});

This plugin generally disables mouse text selects on all the browsers. I call it on #desktop element, which is basically main wrapper:

$('#desktop').disableTextSelect();

I use this, because it disables mouse text selects on all the elements inside #desktop. However, there are some of elements in #desktop, which I want to have normal text select behaviour. Is there some easy way how to implement code, that would make exception to the global rule ?

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

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

发布评论

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

评论(2

知你几分 2024-10-05 17:12:28

JQuery 支持 not() 选择器(此处)。您可以使用那些您希望具有正常行为的元素的区别特征,作为 not() 选择器的参数

JQuery supports the not() selector (here). You could use the distinguishing feature of those elements you wish to have normal behaviour, as the argument to the not() selector

单身情人 2024-10-05 17:12:28

最简单的方法是在开始主要逻辑之前进行一些过滤。

$.extend($.fn.disableTextSelect = function() {
    return this.each(function(){
        if ($(this).parents('#excludedItems').length) { //or any other logic here
            return true; //move to the next item
        }

        if($.browser.mozilla){//Firefox
            $(this).css('MozUserSelect','none');
        }else if($.browser.msie){//IE
            $(this).bind('selectstart',function(){return false;});
        }else if ($.browser.webkit) { // chrome, webkit
          $(this).css('webkitUserSelect','none');
          this.onselectstart = function () { return false; };
        }else{//Opera, etc.
            $(this).mousedown(function(){return false;});
        }
    });
});

The easiest way to do this would be do do some filtering before you start your main logic.

$.extend($.fn.disableTextSelect = function() {
    return this.each(function(){
        if ($(this).parents('#excludedItems').length) { //or any other logic here
            return true; //move to the next item
        }

        if($.browser.mozilla){//Firefox
            $(this).css('MozUserSelect','none');
        }else if($.browser.msie){//IE
            $(this).bind('selectstart',function(){return false;});
        }else if ($.browser.webkit) { // chrome, webkit
          $(this).css('webkitUserSelect','none');
          this.onselectstart = function () { return false; };
        }else{//Opera, etc.
            $(this).mousedown(function(){return false;});
        }
    });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文