我有点坚持这个。我有webapp,我使用简单的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中有一些元素,我希望它们具有正常的文本选择行为。是否有一些简单的方法来实现代码,这会使全局规则异常?
答案 0 :(得分:4)
JQuery支持not()
选择器(here)。您可以使用您希望具有正常行为的那些元素的区别特征,作为not()
选择器的参数
答案 1 :(得分:1)
最简单的方法是在开始主逻辑之前做一些过滤。
$.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;});
}
});
});