Как применить функцию JQuery ко всем элементам, кроме некоторых? - PullRequest
4 голосов
/ 19 октября 2010

Я застрял на этом.У меня есть веб-приложение, где я использую простой плагин 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 есть некоторые элементы, которые я хочу использовать для обычного выбора текста.Есть ли какой-нибудь простой способ реализации кода, который сделал бы исключение из глобального правила?

Ответы [ 2 ]

4 голосов
/ 19 октября 2010

JQuery поддерживает селектор not() ( здесь ).В качестве аргумента для селектора not()

вы можете использовать отличительную особенность тех элементов, для которых вы хотите иметь нормальное поведение.
1 голос
/ 19 октября 2010

Самый простой способ сделать это - выполнить некоторую фильтрацию перед тем, как запустить основную логику.

$.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;});
        }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...