1

在这个小提琴上,当我单击禁用“Li Point1”时,文本 eb 变灰http://jsfiddle.net/adrianjsfiddlenetuser/Q9sHz/14/

可以保持元素的原始样式(不灰显)吗?

4

3 回答 3

3

你有三个选择。您可以从 jquery-ui.css 中删除样式.ui-state-disabled,您可以覆盖您自己的自定义样式表中的样式,或者您可以将更改的属性标记为!important.

删除样式

要删除样式,您需要编辑jquery-ui.css并查找.ui-state-disabled规则(在 jQuery 1.7.2 中,它位于第 262 行)。删除其中的所有样式(您会看到三个、opacityfilterbackground-image.

这样做的缺点是,如果您更新了 jQuery 并获得了一个新的 CSS 文件来配合它,您将丢失您的编辑。

添加自己的样式表

您可以为禁用元素添加自己的规则.ui-state-disabled并更改其样式。由于ui-state-disabled用于 jQuery 中被禁用的所有内容,我建议将您的规则定义为独有的li,或者在您的上设置一个类ul并专门为此定义样式。

<ul class=".noStyleDisableDrag">
    ...
</ul>

.noStyleDisableDrag .ui-state-disabled {
    opacity: 1;
    filter: none;
    background-image: inherit;
}

标记为 !important

您还可以将不透明度、过滤器和背景图像样式添加到定义该特定项目应该如何显示和使用!important标志的其他规则中。不过,这不是最推荐的做事方式,因为如果您忘记标记它,它可能会对您的 CSS 样式调试造成严重破坏,但它是一种选择。为此,您只需将您的样式设置li为:

li {
    opacity: 1 !important;
    filter: none !important;
    background-image: (whatever you want, or none) !important;
}

请注意,在这种情况下,如果您没有在可拖动对象上设置背景图像,则不需要该行来设置背景图像;刚刚设置opacity并被filter取消覆盖。另请注意,这些可以被 JavaScript 覆盖,因此它们不是一成不变的。


在这三个中,您可能需要使用组合。我的建议是使用您自己的自定义样式表来覆盖opacityfilter属性。如果您使用背景图像,您可能需要使用!important它来防止它被ui-state-disabled规则删除。但!important尽可能少用标志。

于 2012-06-11T12:41:45.637 回答
1

第 262 行 jquery-ui.css 删除过滤器和不透明度行

 .ui-state-disabled, .ui-widget-content .ui-state-disabled,
 .ui-widget-header .ui-state-disabled {
     background-image: none; 
 }
于 2012-06-11T12:24:31.683 回答
0

单击禁用按钮会ui-state-disabled向元素添加一个 CSS 类。只需覆盖该类的样式即可。

.ui-state-disabled { opacity:1; }
于 2012-06-11T12:24:22.830 回答