可能重复:
有没有办法使 DIV 不可选择?
我已经看到了许多适用于元素的解决方案。但是我有一个带有标签和按钮的区域。它不仅仅是一个元素,它是 a 中的每个元素DIV
。
我怎样才能使其中包含的任何内容无法DIV
选择?请注意,我不能只在上面放置一个遮罩层,DIV
因为DIV
有我需要能够单击的按钮。
可能重复:
有没有办法使 DIV 不可选择?
我已经看到了许多适用于元素的解决方案。但是我有一个带有标签和按钮的区域。它不仅仅是一个元素,它是 a 中的每个元素DIV
。
我怎样才能使其中包含的任何内容无法DIV
选择?请注意,我不能只在上面放置一个遮罩层,DIV
因为DIV
有我需要能够单击的按钮。
$(".yourdiv").children().css({userSelect: 'none'});
如果您想使用 CSSuser-select
属性禁用选择。如果不是,上面可以很容易地推广到其他方法。
以上只选择直接子代,要选择所有后代,使用.find()
方法:
$(".yourdiv").find("*").css({userSelect: 'none'});
你也可以使用纯 CSS 来做到这一点:
.yourdiv * { /*this selects all elements that are children of yourdiv*/
/*user-select: none rules*/
}
或者:
.yourdiv > * { /*this selects all elements that are direct descendants of yourdiv*/
/*user-select: none rules*/
}
CSS:
div.unselectable {
-moz-user-select: -moz-none;
-khtml-user-select: none;
-webkit-user-select: none;
-o-user-select: none;
user-select: none;
}
HTML:
<div id="foo" class="unselectable">...</div>
参考:
user-select
所有支持它们的浏览器都继承了专有的CSS 变体。看这个例子:
您的问题是不支持这些 CSS 属性的浏览器,即 Opera 和 IE <= 9。令人高兴的是,它们都实现了一个替代方案:unselectable
属性。但是,不是继承的就是这个属性。
最好的解决方案是unselectable="on"
在您需要在 HTML 中不可选择的每个元素上放置一个属性(即在服务器端进行)。但是,如果这不是一个选项,您可以使用 JavaScript 使用递归函数来实现。
如果您使用的是 jQuery,您可以执行以下操作以将unselectable
属性添加到每个具有类“不可选择”的元素及其所有后代:
$(".unselectable").find("*").andSelf().attr("unselectable", "on");
演示:http: //jsbin.com/ulazic/2